0

我们有一个 silverlight(5) 项目,TFS (2010) 和持续集成构建中的源代码已经设置好并且运行良好。但是,我们现在正处于尝试将其发布给一些用户以让他们使用它并提供反馈的阶段。我已经设置了代码,以便它检查更新,如果有更新,它会下载最新的 xap 文件。但是,这需要对 xap 文件进行签名。在我们的开发机器上执行此操作时没有问题,但是当涉及到自动构建时,它会失败,并显示消息

Xap 打包失败。找不到签名工具 SignTool.exe。

我已经尝试了很多方法来让 signtool 被识别并且不能。然而,在 CI 构建中我们实际上并不需要这个,所以我尝试了第二个策略,即使 postbuild 事件以在 VisualStudio 中运行为条件。在 SO 上遵循了各种建议,但无法让它们工作。

构建后事件是

    if "$(BuildingInsideVisualStudio)" == "true" (
"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\signtool.exe" sign /f "$(SolutionDir)castle.pfx" "$(TargetDir)Castle.xap"
copy "$(TargetDir)Castle.xap" "$(SolutionDir)Castle.Web\ClientBin"
)

仍然没有喜悦。已经尝试了多种变体,但始终从自动构建中获得相同的消息。

那么任何人都可以帮助a)在构建服务器上识别签名工具或b)让自动构建跳过postbuild事件吗?

4

2 回答 2

0

最后发现了问题...我一直在放置一些功能,以便应用程序下载并安装最新的 xap 文件。这需要签名。由于这不起作用,我遵循了一些关于签署 xap 文件的说明,没有意识到这里的其他开发人员之一已经在构建后事件中放置了我上面描述的代码。我错误地认为这是由于我选中了“签署 Xap 文件”复选框而创建的。

所以第一个问题是其他开发人员没有与我们共享他的 pfx 文件以添加到我们的证书存储中。其次,也是主要问题,我们随后进行了两次签约尝试。一个通过复选框,一个通过构建后事件。我删除了复选框,它工作正常。该复选框的问题在于它希望 SignTool.exe 位于特定位置。在我们带有完整 VS 的开发盒上,它正在寻找它,但在构建服务器上却不是。认为它也可能与 64 位机器有关。通过仅使用构建事件(一旦您安装了正确的证书),您可以明确指定 signtool 的位置,并在必要时将 windows sdk 安装到该位置。

于 2013-04-03T09:42:47.580 回答
0

这是此错误在 Google 中的最高结果,因此请使用我的解决步骤对其进行更新。

以上对我不起作用,但执行以下步骤应该可以解决它。

  1. 在构建服务器上安装 Windows 8.1 SDK(对我来说是 Windows 2008 R2)
  2. 将 Windows SDK BIN 目录(在我的服务器上包含 signtool.exe)添加到 Environment PATH 变量中 - 例如 c:\program files (x86)\Windows Kits\8.1\bin - 注意:不要在此周围添加引号
  3. 将文件路径添加到 PATH 变量后,重新启动 services.msc 中的所有 Visual Studio Team Foundation 服务,因为它需要在构建之前重新加载这些服务
于 2016-01-31T15:33:44.743 回答