Задаче «SignFile» не было присвоено значение для обязательного параметра «CertificateThumbprint»

У нас есть бизнес-приложение, которое развертывается с помощью clickonce. Я могу создать и опубликовать приложение без проблем, но когда я пытаюсь использовать Continuous Integration (Построить каждую регистрацию), я получаю следующую ошибку:

 2>C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets(3450,5):

ошибка MSB4044: задаче «SignFile» не задано значение для обязательного параметра «CertificateThumbprint».

[C: \ Строит \ 1 \ Pulse \ DefaultBuild \ SRC \ Pulse \ Pulse \ Pulse.csproj]

Выполнено задание "SignFile" - СБОЙ.

Мы подписываем приложение (точнее, манифест ClickOnce), используя сертификат подписи кода, который зарегистрирован в AD как Trusted Publisher.

Сертификат хранится в хранилище сертификатов на моей локальной рабочей станции. Сертификат также находится в хранилище сертификатов сервера сборки (1. В Персональном хранилище, 2. в Персональном хранилище учетной записи службы TFSBuildServiceHost и 3. в Персональном хранилище самого сервера tfs / build).

Где используется Visual Studio 2013, обновление 4, C #, .Net 4.5 и TFS 2013, обновление 4.

Я понятия не имею, что вызывает эту ошибку, любая помощь приветствуется.

РЕДАКТИРОВАТЬ:

Я забыл упомянуть, что сборка tfs работала отлично несколько недель назад. Я ничего не изменил, я убедился, что файл проекта (Pulse.csproj) не изменился, и у меня также было несколько успешных сборок с этим точным определением файла / сборки Pulse.csproj. Я почти уверен, что это должно быть что-то на сервере TFS. Я помню, что у Microsoft были некоторые проблемы с некоторыми обновлениями, касающимися инфраструктуры сертификатов, может ли это быть связано?

РЕДАКТИРОВАТЬ 2: Я попытался построить проект с помощью командной строки с помощью этой команды:

«C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ amd64 \ MSBuild.exe» C: \ Builds \ 1 \ Pulse \ DefaultBuild \ src \ Pulse \ Pulse.sln

Сбой сборки со следующим сообщением:

CleanPublishFolder: удаление каталога "bin \ Debug \ app.publish \". _DeploymentComputeClickOnceManifestInfo: создание каталога «bin \ Debug \ app.publish».
Копирование файла из «obj \ Debug \ Pulse.exe» в «bin \ Debug \ app.publish \ Pulse.exe». C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ amd64 \ Microsoft.Common.CurrentVersion.targets (3450,5): ошибка MSB3482: Произошла ошибка при входе в систему: SignTool.exe не найден. [C: \ Builds \ 1 \ Pulse \ DefaultBuild \ src \ Pulse \ Pulse \ Pulse.csproj] Готовый проект сборки "C: \ Builds \ 1 \ Pulse \ DefaultBuild \ src \ Pulse \ Pulse \ Pulse.csproj" (цели по умолчанию) ) -- НЕ УДАЛОСЬ.

Готово Создание проекта "C: \ Builds \ 1 \ Pulse \ DefaultBuild \ src \ Pulse \ Pulse.sln" (цели по умолчанию) - СБОЙ.

Сборка не удалась.

"C: \ Builds \ 1 \ Pulse \ DefaultBuild \ src \ Pulse \ Pulse.sln" (цель по умолчанию) (1) -> "C: \ Builds \ 1 \ Pulse \ DefaultBuild \ src \ Pulse \ Pulse \ Pulse.csproj" "(цель по умолчанию) (2) -> (цель _DeploymentComputeClickOnceManifestInfo) -> C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ amd64 \ Microsoft.Common.CurrentVersion.targets (3450,5): ошибка MSB3482: ошибка MSB3482: ошибка Произошла ошибка при входе в систему: SignTool.exe не найден. [C: \ Строит \ 1 \ Pulse \ DefaultBuild \ SRC \ Pulse \ Pulse \ Pulse.csproj]

0 Warning(s)
1 Error(s)

Signtool определенно существует на сервере. Путь к инструменту подписи: «C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.1A \ Bin \ signtool.exe» и «C: \ Program Files \ Microsoft SDK \ Windows \ v7.1 \ Bin». \ signtool.exe»

Самое интересное, что я МОГУ построить решение, используя другой инструмент msbuild.

«C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild.exe» C: \ Builds \ 1 \ Pulse \ DefaultBuild \ src \ Pulse \ Pulse.sln

РЕДАКТИРОВАТЬ 3:

Я установилКомплект для разработки программного обеспечения Windows (SDK) для Windows 8 и теперь я могу построить решение с помощью командной строки. Таким образом, сертификат подписи кода установлен и доступен.

Но сборка TFS не удалась.

Вот вывод ошибок, собранных из файла журнала tfsbuild:

      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)

РЕДАКТИРОВАТЬ 4:

Visual Studio 2013 не установлен на нашем сервере сборки. Я уже просмотрел файл журнала и обнаружил, что TFS Build использует MSBuild.exe, хранящийся в C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ amd64 \.

Поскольку я могу собрать проект на сервере сборки с помощью MSBuild.exe, чем TFS Build, я могу быть уверен, что сам сертификат не является проблемой.

Я создал новое определение сборки без изменения каких-либо настроек, но все равно получаю то же сообщение об ошибке.

Я также восстановил установку TFS на сервере сборки, но не повезло.

Я сравнил все файлы * .targets, хранящиеся в папке C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ amd64 \ на сервере, с файлами * .targets в том же месте на моем клиентском компьютере. Там 100% идентично.

Само собой разумеется, что я могу без проблем построить проект на своем клиентском компьютере (через VS2013 и командную строку).

Я удалил и перерегистрировал / создал сервис сборки / контроллер / агент. Результат все тот же.

Я застрял здесь. Есть идеи?

Ответы на вопрос(6)

Ваш ответ на вопрос