2014-03-13 261 views
0

我想打開MvcBuildViews檢查過夜生成而不需要編輯項目文件。由於項目名稱/名稱空間衝突,我必須使用$(MSBuildProjectDirectoryNoRoot)。MSBuild命令行參考保留屬性

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

從我的測試到目前爲止,保留屬性沒有得到足夠的評估。 有沒有解決方法?

回答

0

您不能將$(MsBuildProperty)作爲命令行參數傳遞給MsBuild。對於解決方法,我有一種適用於所有項目的模式,可以更好地控制構建過程。見common targets and props files

這些文件包含解決方案中許多項目所共有的邏輯和任務。您可以使用MsBuild <Import />任務在項目頂部導入公共屬性文件,以合併項目中所有常見的MsBuild $(屬性)值。像<IntermediateOutputPath>C:\Temp\$(MSBuildProjectDirectoryNoRoot)</IntermediateOutputPath>這樣的事情會去這裏。

在您的項目的底部,您會包含任何自定義的MsBuild目標或任務的.targets腳本<Import />。像普通的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目標,以你的項目需要進口。