2013-03-21 68 views
0

我们有一个silverlight(5)项目,TFS(2010)和Continuous Integration构建中的源代码已经安装并正常工作。但是,我们现在正处于我们试图将其发布给某些用户的阶段,以便他们使用它并提供反馈。我已经设置了代码,以便检查更新以及是否有下载最新的xap文件。但是,这需要对xap文件进行签名。在我们的开发机器上这样做时没有问题,但是当涉及到自动化构建时,它会失败,并且消息问题在TFS的后期构建事件中签署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)让自动构建跳过构建后的事件?

+0

您能够使用资源管理器导航到TF Build服务器上的SignTool.exe吗? – TimVK 2013-03-21 13:46:33

+0

@TimVK是的 - 如果我在命令提示符下运行等价物,它工作正常 – SteveL 2013-03-21 14:02:58

+0

如果您使用标记脚本运行TFS构建,但没有postbuild事件中的条件,您不能在日志构建中看到“活动日志“构建在哪里寻找signtool? – TimVK 2013-03-21 14:09:11

回答

0

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

所以第一个问题是,其他开发人员没有与我们分享他的pfx文件以添加到我们的证书商店。 其次,还有一个主要问题,就是我们有两次尝试签字。一个通过复选框,另一个通过post build事件。我删除了复选框,它工作正常。 复选框的问题是它期望SignTool.exe位于特定位置。在我们的开发包中,完全VS是它在寻找它的地方,但在构建服务器上却不是。认为它也可能与64位机器有关。 通过仅使用构建事件(一旦您安装了正确的证书),您可以明确指定signtool的位置,并在必要时将Windows sdk安装到该位置。

0

这是Google针对此错误的最佳结果,因此请使用我的步骤来解决此问题。

上述没有为我工作,但执行下面的步骤应该修复它。

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