MSBuild命令行引用保留属性

时间:2014-03-13 15:18:48

标签: msbuild

我想打开MvcBuildViews检查过夜构建,而无需编辑项目文件。由于项目名称/命名空间冲突,我必须使用$(MSBuildProjectDirectoryNoRoot)。

MSBuild /p MvcBuildViews=true;IntermediateOutputPath=C:\Temp\$(MSBuildProjectDirectoryNoRoot)  MySolution.sln 

从我的测试到目前为止,保留属性没有及早得到评估。 有工作吗?。

1 个答案:

答案 0 :(得分:0)

您不能将$(MsBuildProperty)作为命令行参数传递给MsBuild。对于解决方法,我有一个模式,您可以将其应用于所有项目,并让您更好地控制构建过程。请参阅common targets and props files

这些文件包含解决方案中许多项目通用的逻辑和任务。您可以使用MsBuild <Import />任务导入项目顶部的公共属性文件,以合并项目中的所有常见MsBuild $(Property)值。 <IntermediateOutputPath>C:\Temp\$(MSBuildProjectDirectoryNoRoot)</IntermediateOutputPath>之类的东西会在这里。

在项目的底部,您需要<Import />包含任何自定义MsBuild目标或任务的.targets脚本。像普通的AfterBuild目标这样的东西可以在这里。

<Project>
  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove( $(MSBuildProjectDirectory) , Common.props ))\Common.props" />
  <!-- Project contents -->
  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove( $(MSBuildProjectDirectory) , Common.targets ))\Common.targets" />
</Project>  

公共目标文件是一个类似于项目文件的MsBuild脚本,它包含要由项目导入的自定义MsBuild目标。