0

我正在尝试使用 tfsbuild 和 Visual Studio 2012 构建各种 csproj 文件。我创建了一个构建定义,其中包含适当的过程来构建三个不同的 csproj 文件。每个 csproj 文件都有 prebuild 和 postbuild 事件,大多数是简单的删除和复制命令。只需这些步骤,构建就可以很好地工作。现在我想添加命令,让文件在构建之前从 tfs 中签出,并在构建后重新签入。我已将正确的 VS 命令行命令添加到 prebuild 和 postbuild 事件

查看:

"$(DevEnvDir)tf" checkout /lock:none "$(Pathname)$(ConfigurationName)\$(TargetFileName)"

报到:

"$(DevEnvDir)tf" 签入 "$(Pathname)$(ConfigurationName)\$(TargetName).*" /noprompt /force /comment:"构建签入"

但是现在当我尝试构建时,我得到一个返回的错误,如下所示:

$/AiFramework/toolbox/Accelitec.Utility/Accelitec.Utility.csproj - 1 个错误,0 个警告,查看日志文件 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common。目标 (1063):命令 ""C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\tf" checkout /lock:none "\AiDevelopment\AiFramework\bin\Debug\Accelitec.Utility.dll" " 以代码 100 退出。

错误报告没有提供更多关于出了什么问题的信息。有趣的一点是,当我在本地和单独构建文件时,即使使用了 checkout/in 命令,文件也会构建,甚至执行正确的 checkout/in。

我的想法(在团队服务器上对命令行进行了一些摆弄)是它与工作区有关,特别是签出文件所需的工作区,但除此之外,我不知道从哪里继续。

4

2 回答 2

0

我建议您远离构建后事件,而是修改工作流程。至少,使用 MSBUILD 而不是构建后事件。

于 2013-05-21T20:56:52.140 回答
0

还要验证工作区。

前段时间我遇到了同样的问题。发生的事情是多个映射到不同工作区中的同一目的地。

清理放置文件夹并使用以下参数请求新构建:

/p:OverrideForceGet=true;OverrideSkipInitializeWorkspace=false
于 2016-09-23T13:49:59.213 回答