Ich habe ein Projekt A mit Abhängigkeit B über Nuget. Abhängigkeit B kommt von einem anderen Team und liegt außerhalb meiner direkten Kontrolle.Überschreiben Sie die Abhängigkeit von Nuget-Paket im Nachbau
Das nuget-Paket für B enthält Abhängigkeiten für B einschließlich Common.Logging v1.2. Dies wird an Ort und Stelle über die Zieltargetdatei von B (etwa <Copy SourceFiles='@(PackageBManagedFiles)' DestinationFolder="$(TargetDir)\"/>
)
kopiert. Ich benötige außerdem einen Verweis auf Common.Logging in Projekt A, aber mit späterer Version 3.0. Ich habe dies mit nuget hinzugefügt und die Referenz in Visual Studio sieht ok.
Als ich brauche zwei Versionen von Common.Logging, ich habe eine assemblyBinding
in die app.config-Datei hinzugefügt, so etwas wie:
<dependentAssembly>
<assemblyIdentity name="Common.Logging" publicKeyToken="xxx" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
So ideal würde Ich mag die Version 3.0 von Common.Logging zu sein in meinem bin-Verzeichnis.
Version 1.2 endet jedoch in meinem bin-Verzeichnis - und daher funktioniert die Anwendung nicht.
Ich habe versucht, zurück zu Version 3.0 mit einem Post-Build-Ereignis zu überschreiben. Das Echo des Inhalts des bin-Verzeichnisses auf eine Datei während des Post-Build-Ereignisses (etwa dir $(TargetDir) > dir.txt
) zeigt, dass die Dateikopie funktioniert hat, aber zu dem Zeitpunkt, an dem der Build abgeschlossen wurde, ist die alte Version der Datei wieder vorhanden. Diese
legt nahe, dass die Reihenfolge der Build ist wie folgt:
Abhängigkeiten in Ort kopiert
Post bauen Ereignisse laufen
nuget Ziele Datei für Paket B laufen
Das deutet darauf hin, dass ich könnte cr Erhalte mein eigenes nuget-Paket mit Common.Logging 3.0, das eine Zieldatei enthält, um die neue 3.0-DLL über die alte 1.2-DLL-Datei zu kopieren - aber nur, wenn ich die Reihenfolge garantieren könnte, in der die nugget-Pakete/targets-Dateien ausgeführt wurden.
Irgendwelche Ideen, wie ich Common.Logging 3.0 nach einem Build in mein bin-Verzeichnis bekommen kann?