基于TFS项目工作区设置项目输出目录

时间:2013-09-20 17:32:09

标签: visual-studio-2012 tfs tfs2012

我在TFS项目中使用Visual Studio 2012。我在当前项目集合中有两个项目,其中一个项目的工作区映射到C:\Workspace\ProjectA

在这个项目中,我有一个解决方案文件,其中包含多个不同文件夹深度的.csproj文件。我想要做的是设置这些.csproj项目将Properties > Build > Output > Output path属性设置为C:\Workspace\ProjectA\bin\Debug,但我不想使用我希望将其设置为{{1}的硬编码路径}。是否有一种简单的方法可以像使用某些现有环境或注册表变量一样执行此操作?

2 个答案:

答案 0 :(得分:2)

听起来你正试图管理一个大型项目。在这种情况下,您希望拥有一个所有项目都导入的Common.targets文件,然后您可以通过直接编辑来更改这些内容。将Common.targets放在团队项目工作区(C:\Workspace\ProjectA)的根目录中,然后通过添加以下内容将其导入每个.csproj中:

<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove('$(MSBuildThisFileDirectory)', 'Common.targets'))\Common.targets" />

...在<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets">之类的行之前,因为您希望您的更改会影响其中的内容。

完成后,您可以使用Common.targets覆盖所需的任何csproj属性。例如,要覆盖OutputPath,您需要:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <OutputPath>My_output_path</OutputPath>
  </PropertyGroup>
</Project>

注意:最终,我发现我希望一些Common.targets内容在常规​​<Import>之后生效。因此,从所有csproj中删除了所有<Import>个,并将它们移动到Common.targets。

答案 1 :(得分:0)

使用相对文件路径而不是硬编码更新所有.csproj文件的输出路径。

像.... \ projectA \ bin \ debug之类的,“.. \”的数量将根据各个项目的文件夹结构而有所不同。

有关详情,请参阅此文章:Absolute VS Relative