听起来您正在尝试管理一个大型项目。在这种情况下,您希望拥有一个所有项目都导入的 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>
注意<Import>
:最终,我发现我希望一些 Common.targets 的东西在常规s之后生效。因此,从所有 csprojs 中删除所有这些<Import>
s,并将它们移至 Common.targets。