在工作区只有一个工作文件夹的项目中,我的构建脚本运行良好。现在我正在处理一个需要 2 个工作文件夹的新项目,我之前脚本的所有签出和签入命令都失败了,没有找到文件。
显然,我不了解这里工作区实现的关键部分......我有一个依赖于其他项目的项目,第二个工作文件夹基本上是第 3 方文件夹,其中引用了各种已发布的 DLL 和标头编译我的项目所需的文件。有 2 个活动文件夹,本地文件夹是:
$(SourceDir)\TEAM-MAIN\地址终结器 $(SourceDir)\TEAM-MAIN\HH-CAHPS Project\MAINLINE\3rd 方
构建的代码工作正常,但自定义 AfterGet 在以下条目上失败:
<!-- Check out all of the assemblyInfo files -->
<Exec Command="$(TfCommand) checkout AssemblyInfo.cs /recursive"
WorkingDirectory="$(MSBuildProjectDirectory)\..\sources"
ContinueOnError="false"/>
如果我有一个工作文件夹并将源代码移动到足够高的位置以获取所有需要的文件,该项目当然可以工作,但我不想通过 43 个其他项目来做我想做的事情,更不用说与他们的汇编文件...
我也试过:
<!-- Check out all of the assemblyInfo files -->
<Exec Command="$(TfCommand) checkout AssemblyInfo.cs /recursive"
WorkingDirectory="$(SolutionRoot)"
ContinueOnError="false"/>
同样的问题,找不到任何程序集文件...我检查了构建日志,并且肯定看到在构建阶段检查了程序集文件...
任务“获取” 获取 TeamFoundationServerUrl="http://pgpd-team01:8080/" BuildUri="vstfs:///Build/Build/1430" Force=True Overwrite=False PopulateOutput=False Preview=False Recursive=True Version="C7564" 工作区="SBN01P-TFS03_61" <剪辑> 获取 C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\Sources\Address Finalizer\Address Finalizer\Properties\AssemblyInfo.cs;C7525。
如果有人有任何想法或可以向我指出一些文章以更好地解释多个工作文件夹的工作原理,我将不胜感激。
一些构建变量的值:
MSBuildProjectDirectory:C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\BuildType 解决方案根目录:C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\Sources
为了提供更多信息,我添加了以下命令:
<!-- 报告我们的工作文件夹是什么 --> <执行 Command='$(TfCommand) 工作文件夹' WorkingDirectory="$(SolutionRoot)\TEAM-MAIN\Address Finalizer"/>
结果是:
任务“执行” 命令: “C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\..\tf.exe”工作文件夹 ==================================================== ============================== 工作区:SBN01P-TFS03_61 (tfsservice) 服务器:http://pgpd-team01:8080/ $/InfoTurn/TEAM-MAIN/Address Finalizer:C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\Sources\TEAM-MAIN\Address Finalizer $/InfoTurn/TEAM-MAIN/HH-CAHPS Project/MAINLINE/第 3 方:C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\Sources\TEAM-MAIN\HH-CAHPS Project\MAINLINE\3rd聚会
我发现以下工作目录可以工作:
WorkingDirectory="$(SolutionRoot)\TEAM-MAIN\Address Finalizer"
但是以下两个没有,请注意第二个是我的第二个工作文件夹:
WorkingDirectory="$(SolutionRoot)" WorkingDirectory="$(SolutionRoot)\TEAM-MAIN\HH-CAHPS 项目\MAINLINE\3rd Party"
我为标签任务得到的错误是最有用的:
使用程序集“C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\Microsoft.TeamFoundation.Build.Tasks.VersionControl.dll”中的“标签”任务。 任务“标签” 标签 TeamFoundationServerUrl="http://pgpd-team01:8080/" BuildUri="vstfs:///Build/Build/1507" Name="Address Finalizer 2.0.1 Build 039" Recursive=True Comments="Automated build: Address Finalizer 2.0.1 Build 039" Version="W" Child="replace" Files="C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\Sources" C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\BuildType\TFSBuild.proj(310,5,310,5):错误:错误:无法确定工作区。
结帐的实际错误是:
任务“执行” 命令: “C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\..\tf.exe”检查 AssemblyInfo.cs /recursive 在您的工作区中的 C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\Sources\AssemblyInfo.cs 中找不到匹配项。 C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\BuildType\TFSBuild.proj(280,5): error MSB3073: The command ""C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE \PrivateAssemblies\..\tf.exe" checkout AssemblyInfo.cs /recursive" 以代码 1 退出。