TFS2010中MSBuild OutputPath和OutDir存在问题

TFS2010中MSBuild OutputPath和OutDir存在问题,msbuild,Msbuild,我们有一个非常大的解决方案(大约300多个)项目,我们正试图通过TFS2010上的MSBuild来构建它。 我们可以在所有的开发机器上通过MSBuild构建它,并且正在采用TFS 我们的代码结构如下所示: bin\Client bin\Server Framework\ClientFramework.csproj Modules\Module1\Project1 Modules\Module2\Project2 etc. 每个项目都有一个相对的OutputPath,用于将代码构建到bin客户机

我们有一个非常大的解决方案(大约300多个)项目,我们正试图通过TFS2010上的MSBuild来构建它。 我们可以在所有的开发机器上通过MSBuild构建它,并且正在采用TFS

我们的代码结构如下所示:

bin\Client
bin\Server
Framework\ClientFramework.csproj
Modules\Module1\Project1
Modules\Module2\Project2
etc.
每个项目都有一个相对的OutputPath,用于将代码构建到bin客户机或服务器目录。例如,Project1.csproj的输出路径为“.\..\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移动到二进制文件中


任何关于如何实现这一点或我们应该如何工作的想法都是值得赞赏的,但是更新我们现有的项目可能会被证明是有问题的,因为所有这些都适用于VS、开发者命令行构建和CC.net。

我在MSDN上找到了答案:

,因为这是谷歌搜索“TFS OutDir”时弹出的第一个链接,我必须提供一个更新的解决方案。我花了一整天的时间在OutDir、OutputPath上玩,并用TeamBuildOutDir覆盖它们。更好的解决方案是设置MSBuild属性GenerateProjectSpecificOutputFolder。它附带了.NET4.5。此处的更多信息:

Microsoft文章此处:控制生成系统将二进制文件放置在何处这有限制,每个输出目录只能有一个解决方案,但如果这是您的设置,这是一个有效的答案+1.您的链接已断开。你能修好吗?链接仍然有效。可能是昨天由于DDOS攻击而停机。您能详细说明一下吗?仅仅发布链接对未来的访问者没有帮助;解释该链接如何专门解决您的问题。对于未来的访问者:您需要自定义构建(基本上是定义构建工作流的XML文件),只需删除“OutDir”参数。以纯文本形式打开XML文件,搜索OutDir,然后将其删除。在我的例子中,我刚刚删除了
OutDir=“[outputDirectory]”
,现在它使用了将输出文件复制到每个项目指定的OutputPath的默认行为。从今天(2016年)起,对于.Net 4.5,您还有另一个解决方案,请参见投票最多的答案和
GenerateProjectSpecificOutputFolder
MSBuild参数。