MSBuild在TFS2010中的OutputPath和OutDir存在问题

7
我们有一个非常庞大的解决方案(约300个项目),我们正在尝试通过TFS2010上的MSBuild进行构建。我们可以在所有开发机器上通过MSBuild进行构建,并正在采用TFS。
我们代码的结构如下:
bin\Client
bin\Server
Framework\ClientFramework.csproj
Modules\Module1\Project1
Modules\Module2\Project2
etc.

每个项目都有一个相对的 OutputPath,该路径将代码构建到 bin 客户端或服务器目录中。例如,Project1.csproj 的 OutputPath 为 "..\..\bin\Client"。
我们似乎在 TFS MSBuild 中遇到了问题,OutDir 被设置为固定路径:
C:\Builds\MyProject\Binaries\

在解析OutDir之上的相对OutputPath时,问题变得混乱起来。

  • ClientFramework转到C:\ Builds \ MyProject \ Binaries \ .. \ bin \ Client
  • Project1 转到 C:\ Builds \ MyProject \ Binaries \ .. \ .. \ bin \ Client
  • 等等。

我们还有一些后期构建事件,将一些第三方dll复制到bin文件夹中,这些路径也无法正确解析。

我认为我们要解决的解决方案是将所有内容构建到现有的bin \ Client,bin \ Server结构中,然后将文件夹从bin移动到Binaries。

如何完成此操作或我们应该如何工作的任何想法都会受到赞赏,但更新现有项目可能会有问题,因为它可以与VS,开发人员命令行构建和CC.net一起使用。


微软文章:控制生成系统放置二进制文件的位置 http://msdn.microsoft.com/zh-cn/library/ff977206.aspx - Webplanet TFS Consulting
2个回答

7

这种方法的限制是每个输出目录只有一个解决方案,但如果这是您的设置,则是有效的答案。+1。 - DaveShaw
你的链接已经失效了,能否修复一下? - Ryan Gates
链接仍然有效。可能是由于昨天的DDOS攻击而导致宕机。 - Cameron Taggart

5

8
能否详细说明一下?仅仅发布一个链接并不会帮助未来的访问者;解释该链接如何具体解决您的问题才有帮助。 - George Stocker
对于未来的访问者:您需要自定义构建(基本上是定义构建工作流程的XML文件),并简单地删除“OutDir”参数。以纯文本形式打开XML文件,搜索OutDir然后将其删除。在我的情况下,我只是删除了OutDir =“[outputDirectory]”,现在它使用默认行为将输出文件复制到每个项目指定的OutputPath。截至今天(2016年),使用.Net 4.5,您还有另一种解决方案,请参见得票最高的答案和GenerateProjectSpecificOutputFolder MSBuild参数。 - ken2k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接