2
我已經做了幾個自定義任務MSBuild,但我在這裏面臨新的情況。MSBuild自定義任務與變量no輸入參數
總之,我想這樣做:
<Target Name="MyTarget">
<CustomTask Files="">
<Input Name="SomeName" Action="SomeActionName />
<Input Name="SomeName" Action="SomeActionName />
<Input Name="SomeName" Action="SomeActionName />
</CustomTask>
</Target>
我想這樣做,因爲我覺得它比使用Itemgroups/propertygroups更具可讀性。 有一個屬性,如輸出這幾乎是我所需要的。它應該只是而不是輸入(因此名稱)。
到目前爲止,我已經嘗試使用兩個任務解決此問題:CustomTask和InputTask。
請注意,輸入不一定是任務。這只是一個測試和獲得可變大小的輸入集合的手段。
public class CustomTask : Task
{
[Required]
public TaskItem[] Files { get; set; }
public InputTask[] Subs { get; set; }
public override bool Execute()
{
if(Subs != null)
{
Subs.ToList().ForEach(sub => sub.Execute());
}
else
{
Log.LogMessage("No Subs");
}
return true;
}
}
public class InputTask: Task
{
[Required]
public TaskItem Name{ get; set; }
[Required]
public TaskItem Action{ get; set; }
public override bool Execute()
{
Log.LogMessage("" + Name + " should " + Action);
return true;
}
}
的想法是,MBSuild可以「檢測」子任務,然後會遞給我他們的集合,但我只是得到一個MSB4067錯誤。
我已經瀏覽了很多在線操作系統任務和官方文檔,但是我還沒有找到任何這樣的例子。
這甚至有可能這樣做嗎?
如果不是,你會如何推薦我解決這個問題(PropertyGroup/ItemGroup/Other)?
是的,這絕對是我已經在帖子中提到的所有已經考慮的方式。我可能最終會這樣做,但希望有更多的讀者友好的方式來做到這一點。如果我找到一個好的選擇,我會回來。 –