我想打开MvcBuildViews检查过夜构建,而无需编辑项目文件。由于项目名称/命名空间冲突,我必须使用$(MSBuildProjectDirectoryNoRoot)。
MSBuild /p MvcBuildViews=true;IntermediateOutputPath=C:\Temp\$(MSBuildProjectDirectoryNoRoot) MySolution.sln
从我的测试到目前为止,保留属性没有及早得到评估。 有工作吗?。
答案 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目标。