目前我受到两个 TFS 构建问题的困扰:
问题一:我有一个项目的解决方案,该项目现在在另一个解决方案中引用另一个项目的 dll 产品。构建代理似乎不包含这些 dll,构建失败。
问题二:我有一个解决方案引用另一个解决方案中的项目。构建代理似乎不包括外部引用的项目,构建失败。
我查看了“复制目录”构建活动,但不知道在哪里填充或将什么作为源值和输出值。
最佳实践是使用项目引用来引用同一解决方案中的其他项目。对于解决方案外部的引用,您应该使用文件引用,然后检入正在引用的已编译 DLL。
Solution1
\Project1 --> Project1.dll
\Project2 --> Project2.dll
Solution2
\ProjectA (references Project1.dll)
\ProjectB (references Project2.dll)
\References
\Project1.dll -- this DLL gets checked in here and ProjectA references from here
\Project2.dll -- this DLL gets checked in here and ProjectB references from here
项目A.csproj
<Reference Include="Project1.dll, Version=blah blah blah">
<HintPath>..\References\Project1.dll</HintPath>
</Reference>
项目B.csproj
<Reference Include="Project2.dll, Version=blah blah blah">
<HintPath>..\References\Project2.dll</HintPath>
</Reference>
使用这种方法,您必须构建 Solution1,获取被删除的 DLL,然后将它们检入到 Solution2 的 References 文件夹中。您可以在解决方案 1 的构建中获得真正的幻想并设置一些逻辑,它会自动签出 Solution2\References 文件夹,用构建中的最新版本替换 Project1 和 Project2 DLL,然后将它们签入......如果你是使用持续集成这将启动解决方案 2 的构建。
如果您使用的是 TFS 2012 / TFS2010 构建模板,请确保将“解决方案特定构建输出”属性设置为 false。这将确保构建代理在同一个 bin 目录中构建所有程序集。