【发布时间】:2014-07-21 16:56:35
【问题描述】:
应用来自this answer 的建议更改后,我的构建服务器无法构建受影响的解决方案。
问题是 .NET 4.0 和 .NET 4.5 项目是相互编译的。
例如,假设我有 4 个项目:a.csproj、b.csproj、c.csproj。所有项目都有 .NET 4.0 和 .NET 4.5 版本,这意味着我有 a.csproj、a_40.csproj、b.csproj、b_40.csproj、c.csproj 和 c_40.csproj。其中一些项目依赖于解决方案中的另一个项目。例如b*.csproj 依赖于a*.csproj。还有a.csproj和a_40.csproj的输出库同名:a.dll。
现在,TFS 不再像往常一样先编译所有 4.0 程序集,然后编译所有 4.5 程序集,而是选择疯狂的方式并以完全随机的顺序构建所有内容,同时为所有项目使用相同的输出文件夹。这当然失败了。
我想这个问题至少有两种解决方案:
- 不要将所有内容都放在同一个构建文件夹中,而是为每个项目使用一个文件夹,或者每个 .NET 版本至少使用一个文件夹。 (就像 Visual Studio 所做的那样)
- 强制 TFS 按特定顺序构建项目(例如,首先是所有 .NET 4.0 程序集)。
问题:我不知道该怎么做。
我的问题:有人可以告诉我如何使我建议的两个解决方案中的任何一个工作或告诉我解决这个问题的另一个解决方案吗?
【问题讨论】:
-
疯狂的是拥有多个版本的项目。尝试更改构建定义以在每个解决方案中使用单独的输出文件夹?
-
呃我已经这样做了? @约翰桑德斯
-
每个解决方案一个输出文件夹?通常整个构建都会有一个输出。
-
@JohnSaunders 在 TFS 的构建管理器中有一个设置,您可以在其中更改它。遗憾的是,它仅适用于解决方案,不适用于 csproj 文件。
-
这就是我在评论中使用“解决方案”一词的原因。如果每个解决方案都是一个版本,并且每个解决方案使用一个文件夹,也许这会解决您的问题。