2011-05-18 96 views
41

我有以下的MSBuild腳本:如何通過命令行將屬性傳遞給MSBuild,該命令行可以解析爲項目組?

<?xml version="1.0" encoding="utf-8"?> 
<Project DefaultTargets="Main" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">  
    <PropertyGroup> 
    <build_configurations>test1;test2;test3</build_configurations> 
    </PropertyGroup>  
    <ItemGroup> 
    <BuildConfigurations Include="$(build_configurations)" /> 
    </ItemGroup>  
    <Target Name="Main">  
    <Message Text="Running with args: %(BuildConfigurations.Identity)" /> 
    </Target> 
</Project> 

如果我調用腳本不帶任何參數,我得到預期的迴應:

Running with args: test1 
Running with args: test2 
Running with args: test3 

然而,當我試圖通過設置的命令 - 財產第一行:

msbuild [myscript] /p:build_configurations=test5%3btest6%3btest7 

我得到如下:

Running with args: test5;test6;test7 

因此,它不是按預期的配料。我需要讓MSBuild使用三個項目而不是一個項目來創建項目組。我應該怎麼做?謝謝。

P.S.下面的文章基本上解決了我的問題,除了我想要傳遞分號分隔值的情況:http://sedodream.com/CommentView,guid,096a2e3f-fcff-4715-8d00-73d8f2491a13.aspx

回答

43

您已經轉義了分號,防止MSBuild將它們解析爲單個項目。這樣運行了而應該用引號,

msbuild [myscript] /p:build_configurations="test5;test6;test7" 

,你會得到下面的輸出,

Running with args: test5 
Running with args: test6 
Running with args: test7 
+0

完美!那工作。謝謝! – 2011-05-19 03:57:31

相關問題