2009-10-28 13 views
9

Ich habe eine MSBuild-Aufgabe geschrieben, die von Drittanbieter-Assemblys verwendet.Benutzerdefinierte MSBuild-Aufgabe mit Abhängigkeiten

Wenn ich die Aufgabe in meinem Projekt verwenden, beschwert sich MSBuild, dass es die Assembly von Dritt-Anbieter nicht laden kann (nicht überraschend).

Wo sollte ich die Assemblys von Drittanbietern platzieren, damit sie für MSBuild verfügbar sind. Ich habe versucht, ihnen Projektverweise ohne Erfolg hinzuzufügen.

Antwort

9

Ich bin mir nicht sicher, ob ich mein Problem sehr gut ausgedrückt habe, aber jetzt habe ich die Lösung gefunden.

In meiner .proj Datei verweise ich meine benutzerdefinierte Aufgabe mit folgenden Syntax ...

<UsingTask AssemblyFile="..\lib\MyCompany.MSBuild\MyCompany.MSBuild.dll" TaskName="CreateDatabase" /> 

Meine Aufgabe Create beruht auf verschiedenen Baugruppen 3rd-Party. Einige davon werden jedoch nur über Reflektion referenziert und wurden daher standardmäßig nicht in den Ordner ".. \ lib \ MyCompany.MSBuild" aufgenommen.

Ich habe versucht, die Aufgabe zu lösen, indem ich die benötigten Assemblies im selben Verzeichnis wie die .proj-Datei platzierte, die den Task aufruft.

Allerdings hätte ich die Assemblys in das referenzierte Aufgabenverzeichnis ".. \ lib \ MyCompany.MSBuild \" gestellt.

Einfach!

1

Sie können sie zum GAC (Global Assemby Cache) hinzufügen. Dies funktioniert nur, wenn es stark benannt ist.

Sie können auch sicherstellen, dass Sie sie mit copy local = true markiert haben, als Sie die Referenz im Projekt hinzugefügt haben.

Verwandte Themen