Der Task "SignFile" wurde kein Wert für den erforderlichen Parameter "CertificateThumbprint" zugewiesen.
Wir haben eine Branchen-App, die über clickonce bereitgestellt wird. Ich kann die Anwendung ohne Probleme erstellen und veröffentlichen, aber wenn ich versuche, die fortlaufende Integration zu verwenden (bei jedem Einchecken erstellen), wird die folgende Fehlermeldung angezeigt:
2>C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets(3450,5):
Fehler MSB4044: Der Task "SignFile" wurde kein Wert für den erforderlichen Parameter "CertificateThumbprint" zugewiesen.
[C: \ Builds \ 1 \ Pulse \ DefaultBuild \ src \ Pulse \ Pulse \ Pulse.csproj]
Done Task "SignFile" ausführen - FAILED.
Wir signieren die Anwendung (genauer gesagt das ClickOnce-Manifest) mit einem Codesignaturzertifikat, das im AD als Trusted Publisher registriert ist.
Das Zertifikat wird im Zertifikatspeicher auf meiner lokalen Arbeitsstation gespeichert. Das Zertifikat befindet sich auch im Zertifikatspeicher des Build-Servers (1. Im persönlichen Speicher, 2. Im persönlichen Speicher des TFSBuildServiceHost-Dienstkontos und 3. Im persönlichen Speicher des tfs / build-Servers selbst).
Wo verwenden Sie Visual Studio 2013 Update 4, C #, .Net 4.5 und TFS 2013 Update 4.
Ich habe keine Ahnung, was diesen Fehler verursacht, jede Hilfe wird gebeten.
BEARBEITENIch habe vergessen zu erwähnen, dass der tfs-Build vor ein paar Wochen gut funktioniert hat. Ich habe nichts geändert, ich habe überprüft, dass sich die Projektdatei (Pulse.csproj) nicht geändert hat und ich hatte auch einige erfolgreiche Builds mit genau dieser Pulse.csproj-Datei / Build-Definition. Ich bin mir ziemlich sicher, dass es etwas auf dem TFS-Server sein muss. Ich erinnere mich, dass Microsoft Probleme mit einigen Aktualisierungen in Bezug auf die Zertifikatinfrastruktur hatt
EDIT 2: Ich habe versucht, das Projekt über die Befehlszeile mit dem folgenden Befehl zu erstellen:"C: \ Programme (x86) \ MSBuild \ 12.0 \ bin \ amd64 \ MSBuild.exe" C: \ Builds \ 1 \ Pulse \ DefaultBuild \ src \ Pulse \ Pulse.sln
Der Build schlägt mit der folgenden Meldung fehl:
CleanPublishFolder: Entfernen des Verzeichnisses "bin \ Debug \ app.publish \". _DeploymentComputeClickOnceManifestInfo: Verzeichnis "bin \ Debug \ app.publish" erstellen.
Kopieren der Datei von "obj \ Debug \ Pulse.exe" nach "bin \ Debug \ app.publish \ Pulse.exe". C: \ Programme (x86) \ MSBuild \ 12.0 \ bin \ amd64 \ Microsoft.Common.CurrentVersion.targets (3450,5): Fehler MSB3482: Beim Signieren ist ein Fehler aufgetreten: SignTool.exe nicht gefunden. [C: \ Builds \ 1 \ Pulse \ DefaultBuild \ src \ Pulse \ Pulse \ Pulse.csproj] Fertig Bauprojekt "C: \ Builds \ 1 \ Pulse \ DefaultBuild \ src \ Pulse \ Pulse \ Pulse.csproj" (Standardziele) ) -- GESCHEITERT
Erstellungsprojekt "C: \ Builds \ 1 \ Pulse \ DefaultBuild \ src \ Pulse \ Pulse.sln" abgeschlossen (Standardziele) - FEHLGESCHLAGEN.
Build FAILED.
"C: \ Builds \ 1 \ Pulse \ DefaultBuild \ src \ Pulse \ Pulse.sln" (Standardziel) (1) -> "C: \ Builds \ 1 \ Pulse \ DefaultBuild \ src \ Pulse \ Pulse \ Pulse. csproj "(Standardziel) (2) -> (_DeploymentComputeClickOnceManifestInfo-Ziel) -> C: \ Programme (x86) \ MSBuild \ 12.0 \ bin \ amd64 \ Microsoft.Common.CurrentVersion.targets (3450,5): Fehler MSB3482: Beim Signieren ist ein Fehler aufgetreten: SignTool.exe nicht gefunden. [C: \ Builds \ 1 \ Pulse \ DefaultBuild \ src \ Pulse \ Pulse \ Pulse.csproj]
0 Warning(s)
1 Error(s)
Das Signtool ist definitiv auf dem Server vorhanden. Der Pfad zum Signtool lautet: "C: \ Programme (x86) \ Microsoft SDKs \ Windows \ v7.1A \ Bin \ signtool.exe" und "C: \ Programme \ Microsoft SDKs \ Windows \ v7.1 \ Bin" \ signtool.exe "
Der interessanteste Teil ist, dass ich die Lösung mit einem anderen msbuild-Tool erstellen kann.
"C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild.exe" C: \ Builds \ 1 \ Pulse \ DefaultBuild \ src \ Pulse \ Pulse.sln
EDIT 3:Ich habe das @ installieWindows Software Development Kit (SDK) für Windows 8 und jetzt kann ich die lösung über die befehlszeile erstellen. Somit ist das Codesignaturzertifikat installiert und verfügbar.
Aber die TFS-Erstellung schlägt fehl.
Hier ist die Fehlerausgabe aus der tfsbuild-Protokolldatei:
Task "AL"
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\x64\AL.exe /culture:de /out:obj\Debug\de\Pulse.resources.dll /platform:AnyCPU /template:obj\Debug\Pulse.exe /embed:obj\Debug\Pulse.View.Localization.CreditsView.de.resources /embed:obj\Debug\Pulse.View.Localization.PulseMainWindow.de.resources
Microsoft (R) Assembly Linker version 12.0.20806.33440
Copyright (C) Microsoft Corporation. All rights reserved.
Done executing task "AL".
2>Done building target "GenerateSatelliteAssemblies" in project "Pulse.csproj".
2>Target "CreateSatelliteAssemblies" in file "C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets" from project "C:\Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse\Pulse.csproj" (target "CoreBuild" depends on it):
2>Done building target "CreateSatelliteAssemblies" in project "Pulse.csproj".
Target "SetWin32ManifestProperties" skipped. Previously built successfully.
Target "_DeploymentComputeNativeManifestInfo" skipped, due to false condition; ('$(GenerateClickOnceManifests)'!='true') was evaluated as ('true'!='true').
2>Target "CleanPublishFolder" in file "C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets" from project "C:\Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse\Pulse.csproj" (target "_DeploymentComputeClickOnceManifestInfo" depends on it):
Task "RemoveDir" skipped, due to false condition; ('$(PublishDir)'=='$(OutputPath)app.publish\' and Exists('$(PublishDir)')) was evaluated as ('bin\Debug\app.publish\'=='bin\Debug\app.publish\' and Exists('bin\Debug\app.publish\')).
2>Done building target "CleanPublishFolder" in project "Pulse.csproj".
Target "_DeploymentGenerateTrustInfo" skipped, due to false condition; ('$(TargetZone)'!='') was evaluated as (''!='').
2>Target "_DeploymentComputeClickOnceManifestInfo" in file "C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets" from project "C:\Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse\Pulse.csproj" (target "GenerateApplicationManifest" depends on it):
Task "Copy"
Creating directory "bin\Debug\app.publish".
Copying file from "obj\Debug\Pulse.exe" to "bin\Debug\app.publish\Pulse.exe".
Done executing task "Copy".
Using "SignFile" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
Task "SignFile"
2>C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets(3450,5): error MSB4044: The "SignFile" task was not given a value for the required parameter "CertificateThumbprint". [C:\Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse\Pulse.csproj]
Done executing task "SignFile" -- FAILED.
2>Done building target "_DeploymentComputeClickOnceManifestInfo" in project "Pulse.csproj" -- FAILED.
2>Target "_CheckForCompileOutputs" in file "C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets" from project "C:\Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse\Pulse.csproj" (target "_CleanGetCurrentAndPriorFileWrites" depends on it):
2>Done building target "_CheckForCompileOutputs" in project "Pulse.csproj".
Target "_SGenCheckForOutputs" skipped, due to false condition; ('$(_SGenGenerateSerializationAssembliesConfig)' == 'On' or ('@(WebReferenceUrl)'!='' and '$(_SGenGenerateSerializationAssembliesConfig)' == 'Auto')) was evaluated as ('Off' == 'On' or (''!='' and 'Off' == 'Auto')).
2>Target "_CleanGetCurrentAndPriorFileWrites" in file "C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets" from project "C:\Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse\Pulse.csproj" (target "_CleanRecordFileWrites" depends on it):
Task "ReadLinesFromFile"
Done executing task "ReadLinesFromFile".
Task "ConvertToAbsolutePath"
Done executing task "ConvertToAbsolutePath".
Task "FindUnderPath"
Comparison path is "C:\Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse".
Done executing task "FindUnderPath".
Task "FindUnderPath"
Comparison path is "C:\Builds\1\Pulse\DefaultBuild\bin\".
Done executing task "FindUnderPath".
Task "FindUnderPath"
Comparison path is "obj\Debug\".
Done executing task "FindUnderPath".
Task "RemoveDuplicates"
Done executing task "RemoveDuplicates".
2>Done building target "_CleanGetCurrentAndPriorFileWrites" in project "Pulse.csproj".
2>Target "_CleanRecordFileWrites" in file "C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets" from project "C:\Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse\Pulse.csproj" (target "CoreBuild" depends on it):
Task "RemoveDuplicates"
Done executing task "RemoveDuplicates".
Task "MakeDir"
Done executing task "MakeDir".
Task "WriteLinesToFile"
Done executing task "WriteLinesToFile".
2>Done building target "_CleanRecordFileWrites" in project "Pulse.csproj".
2>Done Building Project "C:\Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse\Pulse.csproj" (default targets) -- FAILED.
1>Done executing task "MSBuild" -- FAILED.
1>Done building target "Build" in project "Pulse.sln" -- FAILED.
1>Done Building Project "C:\Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse.sln" (default targets) -- FAILED.
Build FAILED.
"C:\Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse.sln" (default target) (1) ->
"C:\Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse\Pulse.csproj" (default target) (2) ->
(_DeploymentComputeClickOnceManifestInfo target) ->
C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets(3450,5): error MSB4044: The "SignFile" task was not given a value for the required parameter "CertificateThumbprint". [C:\Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse\Pulse.csproj]
0 Warning(s)
1 Error(s)
EDIT 4:Visual Studio 2013 ist nicht auf unserem Build-Server installiert. Ich habe die Protokolldatei bereits durchgesehen und festgestellt, dass der TFS-Build die in C: \ Programme (x86) \ MSBuild \ 12.0 \ bin \ amd64 \ gespeicherte Datei MSBuild.exe verwendet.
Da ich das Projekt mit MSBuild.exe auf dem Build-Server erstellen kann, als dies mit TFS Build möglich ist, kann ich sicher sein, dass das Zertifikat selbst kein Problem darstellt.
Ich habe eine neue Build-Definition erstellt, ohne die Einstellungen zu ändern, aber es wird immer noch dieselbe Fehlermeldung angezeigt.
Ich habe auch die TFS-Installation auf dem Build-Server repariert, aber kein Glück.
Ich habe alle * .targets-Dateien, die im Ordner C: \ Programme (x86) \ MSBuild \ 12.0 \ bin \ amd64 \ auf dem Server gespeichert sind, mit den * .targets-Dateien am selben Speicherort auf meinem Clientcomputer verglichen. Dort 100% identisch.
Es versteht sich von selbst, dass ich das Projekt problemlos auf meinem Client-Computer erstellen kann (über VS2013 und die Befehlszeile).
Ich habe den Build-Service / Controller / Agent gelöscht und neu registriert / erstellt. Das Ergebnis ist immer noch das gleiche.
Ich stecke hier fest. Irgendwelche Ideen