У меня есть решение clickonce, которое работает на нескольких машинах разработчика с установленным VS 2015. Тем не менее, это не работает на нашем buildserver, он поставляется с этой ошибкой signFile. Я установилошибка MSB4018: задача «SignFile» неожиданно завершилась неудачно на сервере сборки
- Строительные инструменты 2015 обновления 3
- .Net 4.6.2 SDK
- Разработка программного обеспечения для Windows Kit
Но Apparantly путь к signtool.exe не правильно настроен , Если я отключу подписание манифеста, он будет продолжен, но придет ошибка с setup.bin.
У кого-нибудь есть хорошая подсказка, как решить проблему SignFile?
[_DeploymentComputeClickOnceManifestInfo] Using "SignFile" task from assembly "Microsoft.Build.Tasks.Core, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
[_DeploymentComputeClickOnceManifestInfo] SignFile
[SignFile] C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(3616, 5): error MSB4018: The "SignFile" task failed unexpectedly.
System.ArgumentNullException: Value cannot be null.
Parameter name: path1
at System.IO.Path.Combine(String path1, String path2, String path3)
at Microsoft.Build.Tasks.Deployment.ManifestUtilities.SecurityUtilities.GetPathToTool(ResourceManager resources)
at Microsoft.Build.Tasks.Deployment.ManifestUtilities.SecurityUtilities.SignPEFile(X509Certificate2 cert, Uri timestampUrl, String path, ResourceManager resources, Boolean useSha256)
at Microsoft.Build.Tasks.Deployment.ManifestUtilities.SecurityUtilities.SignFileInternal(X509Certificate2 cert, Uri timestampUrl, String path, Boolean targetFrameworkSupportsSha256, ResourceManager resources)
at Microsoft.Build.Tasks.Deployment.ManifestUtilities.SecurityUtilities.SignFile(X509Certificate2 cert, Uri timestampUrl, String path)
at Microsoft.Build.Tasks.Deployment.ManifestUtilities.SecurityUtilities.SignFile(String certThumbprint, Uri timestampUrl, String path, String targetFrameworkVersion)
at Microsoft.Build.Tasks.SignFile.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()
Я не знаю, как вы это поняли, но спасибо. Вы случайно знаете, на какой SDK это зависит, поэтому мне не нужно устанавливать все? Прямо сейчас я обошел это, установив свойство/свойство: TargetFrameworkSDKToolsDirectory при вызове msbuild. –
Отвечено обновлено этой информацией (я надеюсь, что я прав!). Что касается того, как я это понял, я начал с обращения к файлу и номеру строки, указанному в верхней части вашего журнала ошибок. Когда я увидел, что задача 'SignFile' не взяла параметр для пути к инструменту/исполняемому файлу, я знал, что мне нужно будет увидеть исходный код задачи' SignFile'. К счастью, MSBuild теперь с открытым исходным кодом! – weir
@dennis_ler - я добавил к этому ответу исправление 'TargetFrameworkSDKToolsDirectory'. – weir