Ich habe ein System, das eine externe COM-Komponente verwendet. Es gibt zwei verschiedene Versionen des COM-Objekts, die im Wesentlichen identisch sind (Der Anbieter hat die COM-GUID ohne eine Änderung der Schnittstelle geändert.) Ich verwende tlbimp.exe, um zwei Interop-DLLs zu erstellen, die für jedes COM-Objekt grundsätzlich identisch sind. Ich möchte zwei .NET-DLLs desselben Assemblynamens für jedes COM-Objekt erstellen. Ich habe also zwei verschiedene Projekte, die auf den gleichen C# Quellcode verweisen (Add as Link). Der einzige Unterschied ist ein anderer Verweis auf die Interop-DLL. Der Plan war, mit verschiedenen DLLs zu enden, die im Grunde die gleichen sind (eine für jedes COM-Objekt) und dann die, die zur Installationszeit benötigt wird, umzubenennen.MSBuild Build-DLL mit zwei verschiedenen Projekten
Ich begann mit einem anderen bin-Verzeichnis für die zweite DLL gebaut. Der Erstellungsprozess wird jedoch auf einzelnes bin-Verzeichnis (TFS Output Location = Single Folder) festgelegt, das die zweite DLL verursacht, die erste zu überschreiben. Also habe ich ein Post-Build-Skript hinzugefügt, um jede DLL so zu benennen, wie sie gebaut wurde.
Das nächste Problem ist, dass die Umbenennung Downstream-Code zu kompilieren verhindert. (Fehlende Assembly-Fehler) Ich könnte versuchen, den ersten DLL-Build auszuwählen und ihn mit dem ursprünglichen Namen zu versehen, aber ich kann Szenarien sehen, wenn sie lokal erstellt werden, was mit Verwirrung enden würde. Welches COM-Objekt wird verwendet? Grundsätzlich können Buildfehler das System in einem seltsamen Zustand hinterlassen.
Ich schaute ursprünglich, um zu sehen, ob ich eine DLL mit seinem Dateiname erstellen könnte, der sich vom internen Assemblynamen unterscheidet, aber das scheint nicht möglich.
Zwei Gedanken über eine Lösung: (? Vielleicht ein anderer da ist)
1) Kann ich eine .NET-DLL mit dem Dateinamen bauen unterscheidet sich von der Assembly? ODER
2) Was ist eine saubere Möglichkeit, den Aufbau von einer (oder beiden) DLL umzubenennen/zu kopieren und eine von ihnen für abhängige Code-Erstellung zu bewahren?