我有一個自定義的MSBuild任務(擴展Microsoft.Build.Utilities.Task)。該任務具有string []類型的屬性。任務本身(姑且稱之爲「BobTask」)是在它的值設置爲遵循的MSBuild文件:如何使用命令行將值分配給自定義MSBuild任務的字符串[]屬性?
<BobTask MyStringArrayProperty="@(MyStringArrayProperty)" />
我的本意是,當用戶運行在命令行的MSBuild文件(使用MSBuild.exe ),他們可以設置像這樣的屬性:
msbuild.exe file.proj /p:MyStringArrayProperty="value1"
或
msbuild.exe file.proj /p:MyStringArrayProperty="value1;value2"
(是的,我知道在命令行樣品上面是不完整的 - 它只是表明我的意圖)
但是,當我嘗試這是真實的,我的自定義任務中的MyStringArrayProperty始終爲空。我發現其他MSBuild任務使用string []屬性,因此對於自定義任務而言,這似乎是一種有效的屬性類型。這導致我相信我在命令行中使用的字符串列表的語法不正確。因此,有沒有辦法使用命令行爲一個自定義MSBuild任務的字符串[]屬性賦值?是否有一些我需要使用的特殊語法?
感謝,
-Craig
我標記這是一個答案,因爲它讓我在正確的軌道上解決我的問題。我所需要做的就是在我的MSBuild文件中將@(MyStringArrayProperty)更改爲$(MyStringArrayProperty);額外的ItemGroup沒有必要。 – Craig 2012-01-17 18:41:02
謝謝你的幫助。 – Craig 2012-01-17 18:41:47
如果您希望將一個可枚舉數組傳遞給您的任務,只需將MyStringArrayProperty類型的數據類型設置爲「ITaskItem []」並傳入@(...)版本即可。如果將其保留爲「字符串」類型,則必須自己解析它,並且無法將元數據附加到數組元素。 – 2012-01-17 20:20:00