Zusätzliche Wege in der msbuild-Skript
Gewusst wie: geben Sie zusätzliche Montage-Referenz-Pfade für die MSBuild-Aufgaben?
Habe ich folgenden Skript so weit, aber kann nicht herausfinden, wie zu geben zusätzliche Suchpfade.
<ItemGroup>
<ProjectsToBuild Include="..\Main\Main.sln" />
</ItemGroup>
<!-- The follwing paths should be added to reference search paths for the build tasks -->
<ItemGroup>
<MyAddRefPath Include="$(MSBuildProjectDirectory)\..\..\Build\Lib1" />
<MyAddRefPath Include="$(MSBuildProjectDirectory)\..\..\Build\Lib2" />
</ItemGroup>
<MSBuild
Projects="@(ProjectsToBuild)"
Properties="Configuration=Debug;OutputPath=$(BuildOutputPath)">
</MSBuild>
UPDATE:
Bitte zeigen Sie ein funktionsfähiges script, das aufruft ursprünglichen Projekt, wie ein SLN mit mehreren zusätzlichen Referenz-Pfade.
Keine Vorschläge zur Verbesserung der Projekt-Struktur bitte.
Ich weiß, wie man eine gute Struktur, aber jetzt ist es die Aufgabe des Aufbaus einer vorhandenen Stück Scheiße.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich endlich herausgefunden, wie es zu tun:
Haben Sie gesagt, Sie wollen in der Lage sein zu ändern die Montage Suchpfade ohne änderung der Projekt-Dateien direkt. Um die Erfüllung dieser Anforderung müssen Sie eine Umgebungsvariable festlegen, die Vorrang vor den AssemblySearchPaths. Mit dieser Technik müssen Sie jeder Montage Referenz-Pfad für alle Projekte in den Lösungen. (Ändern der Projekte oder Kopien der Projekte wäre einfacher. Siehe Letzte Kommentare.)
Einer Technik ist das erstellen einer batch-Datei läuft das Skript setzt die Umgebungsvariablen:
Andere Möglichkeit ist die Definition einer PropertyGroup in Ihrer benutzerdefinierten msbuild-Datei (andernfalls bekannt als der "Haken" benötigt, um diese Arbeit zu machen):
Nun, wenn es nach mir ginge, und aus welchem unerklärlichen Grund konnte ich es nicht ändern Sie die Projekt-Dateien enthalten die aktualisierten Verweise, werde ich mit einbauen, würde ich Kopien machen von den Projekt-Dateien, laden Sie Sie in die IDE, und korrigieren Sie die Verweise in meine kopiert. Die Synchronisierung der Projekte wird zu einem einfachen diff/merge-operation, die automatisch mit modernen tools wie mercurial (heck, ich bin sicher, clearcase verwalten könnte es auch).
Die Eigenschaft, die Sie ändern möchten ist AssemblySearchPaths -. Finden Sie die ResolveAssemblyReference Aufgabe mehr Informationen.
Nutzung von item-Gruppen, wie in deinem Beispiel würde das so Aussehen:
Suchen in %WINDIR%\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.Ziele, Sie können sehen, dass die ResolveAssemblyReference Aufgabe ausgeführt wird als Teil der ResolveAssemblyReferences Ziel. Damit wollen Sie die neu hinzugefügte Ziel zu ändern, die AssemblySearchPaths-Eigenschaft, bevor Sie ResolveAssemblyReferences ausgeführt wird.
...und denken Sie daran, dass Sie nicht benötigen, um ein Ziel für diese, die Sie verwenden können, Projekt-scoped Eigenschaften oder Elemente, wie...
...und wenn Sie tun müssen, um dieses Ziel zu pick-up-Pfade aus einer dynamisch aufgefüllt item-Gruppe, inline-Eigenschaften, nicht die CreateProperty-Aufgabe (wenn Sie nicht mehr in v2.0)