Ich versuche, Dictionary
oder Hashtable
zwischen MSBuild
Aufgaben zu senden/teilen.Hashtable/Dictionary-Parameter in MSBuild Aufgabe
Ich habe die folgenden zwei benutzerdefinierten Aufgaben, Get
, die eine Hashtable und Set
erzeugt, die es verbrauchen sollte.
Get.cs
public class Get : Task
{
[Output]
public Hashtable Output { get; set; }
public override bool Execute()
{
Output = new Hashtable();
return true;
}
}
Set.cs
public class Set : Task
{
[Required]
public Hashtable Output { get; set; }
public override bool Execute()
{
var items = Output.Cast<DictionaryEntry>().ToDictionary(d => d.Key.ToString(), d => d.Value.ToString());
foreach(var item in items)
{
//Do Something
}
return true;
}
}
Die oben genannten Klassen bauen fein in Assembly.dll
ich dann, dass in der folgenden Build-Ziel-Skript verwenden Assembly.dll
um die benutzerdefinierten Tasks Get und Set aufzurufen:
MyTarget.targets
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="Get" AssemblyFile=".\Assembly.dll"/>
<UsingTask TaskName="Set" AssemblyFile=".\Assembly.dll"/>
<Target Name="Get">
<Get>
<Output TaskParameter="Output" ItemName="Output" />
</Get>
<Set [email protected](Output) />
</Target>
</Project>
Als ich das Projekt mit dem obigen Ziel MSBuild zeigt die folgenden Fehler bauen:
The "System.Collections.Hashtable" type of the "Output" parameter of the "Get" task is not supported by MSBuild
Wie kann ich eine Hashtable oder Dictionary in einer Eigenschaft für eine benutzerdefinierte MSBuild-Aufgabe?