Publishing VSTO add-in using MSBuild gives error: The "SignFile" task failed unexpectedly. System.ArgumentNullException: Value cannot be null
Publishing VSTO add-in using MSBuild gives error: The "SignFile" task failed unexpectedly. System.ArgumentNullException: Value cannot be null
我正在尝试在没有 Visual Studio 的 TeamCity 构建服务器上使用 MSBuild 为 Word 发布 VSTO 加载项。我已经完成了这两篇博文中的内容:
http://kentb.blogspot.com/2008/08/building-vsto-projects-without-visual.html
http://www.wiktorzychla.com/2011/02/msb3147-could-not-find-required-file-on.html
我的构建文件是我的 Visual Studio 解决方案,我的目标是 "publish"。 Visual Studio 2013 年在我的开发机器上发布的 ClickOnce 运行良好。
但是在构建服务器上,我得到了这个:
[SignFile] C:\Program Files
(x86)\MSBuild\Microsoft\VisualStudio\v12.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(612,
9): 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()
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.SignFile(X509Certificate2
cert, Uri timestampUrl, String path) at
Microsoft.Build.Tasks.Deployment.ManifestUtilities.SecurityUtilities.SignFile(String
certThumbprint, Uri timestampUrl, String path) at
Microsoft.Build.Tasks.SignFile.Execute() at
Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at
Microsoft.Build.BackEnd.TaskBuilder.d__20.MoveNext()
我不知道这意味着什么或如何修复它。有什么想法吗?
回答我自己的问题,因为这可能对将来的人有所帮助。
我发现这是因为 SignFile 任务的那个版本需要 signtool.exe,我没有安装它。我安装了 Windows SDK 并勾选了所有选项,它已安装并且我的发布任务现在可以运行了。我不确定它属于哪个选项,但我认为它不是 .NET 选项,因为我已经安装了它。
我正在尝试在没有 Visual Studio 的 TeamCity 构建服务器上使用 MSBuild 为 Word 发布 VSTO 加载项。我已经完成了这两篇博文中的内容:
http://kentb.blogspot.com/2008/08/building-vsto-projects-without-visual.html http://www.wiktorzychla.com/2011/02/msb3147-could-not-find-required-file-on.html
我的构建文件是我的 Visual Studio 解决方案,我的目标是 "publish"。 Visual Studio 2013 年在我的开发机器上发布的 ClickOnce 运行良好。
但是在构建服务器上,我得到了这个:
[SignFile] C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(612, 9): 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() 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.SignFile(X509Certificate2 cert, Uri timestampUrl, String path) at Microsoft.Build.Tasks.Deployment.ManifestUtilities.SecurityUtilities.SignFile(String certThumbprint, Uri timestampUrl, String path) at Microsoft.Build.Tasks.SignFile.Execute() at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() at Microsoft.Build.BackEnd.TaskBuilder.d__20.MoveNext()
我不知道这意味着什么或如何修复它。有什么想法吗?
回答我自己的问题,因为这可能对将来的人有所帮助。
我发现这是因为 SignFile 任务的那个版本需要 signtool.exe,我没有安装它。我安装了 Windows SDK 并勾选了所有选项,它已安装并且我的发布任务现在可以运行了。我不确定它属于哪个选项,但我认为它不是 .NET 选项,因为我已经安装了它。