Kompilieren eine version Agnostiker DLL in .NET

Szenario

Habe ich zwei Wrapper für Microsoft Office, eines für 2003 und eine für das Jahr 2007. Da beide Versionen von Microsoft Office, die mit der side-by-side "nicht offiziell möglich", noch von Microsoft empfohlen, wir haben zwei Boxen, eine mit Office 2003 und das andere mit Office 2007. Wir stellen die Wrapper getrennt. Die DLLs sind in unserer Lösung, jede box hat die gleichen Kasse aber mit Office 2003 oder 2007 "entladen", damit es nicht versucht zu kompilieren, dass bestimmte DLL. Versagen zu tun, die werfen Fehler auf Zusammenstellung durch das Office-COM-DLLs nicht zur Verfügung.

Verwenden wir .NET 2.0 und Visual Studio 2008.

Fakten

Da Microsoft auf mysteriöse Weise verändert das Office 2003-API im Jahre 2007 eine Umbenennung und änderung einiger Methoden (Seufzer) damit Sie nicht rückwärts kompatibel, wir müssen die zwei Wrapper.
Wir haben jede Baumaschine mit der Lösung und einem Office-DLL aktiviert. E. g.: die Maschine mit Office 2003 hat das "Office 2007" DLL entladen, daher nicht kompilieren. Das andere Feld ist die gleiche Idee, aber die andere Weise herum. All dies, weil wir können nicht 2 verschiedene Office in der gleichen box zur Programmierung. (könnte man technisch zwei Office zusammen, laut Microsoft), aber nicht für die Programmierung und nicht ohne einige Probleme.

Problem

Wenn wir ändern die Version der Anwendung (von 1.5.0.1 zu 1.5.0.2 zum Beispiel) benötigen, kompilieren Sie die DLL, um mit den neuen version der Anwendung, dies wird automatisch erledigt, da die Office-wrapper ist im Lieferumfang der Lösung. Da die Wrapper sind in der Projektmappe enthaltenen, diejenigen Erben, die APP-Version, aber wir haben es zweimal durchführen und dann "kopieren" die anderen DLL auf dem Computer, erstellt das Installationsprogramm. (Ein Schmerz...)

Frage

Ist es möglich, zu kompilieren eine DLL, die die Arbeit mit alle version der Anwendung, obwohl Sie "älter"? Ich habe etwas gelesen über manifeste, aber ich habe noch nie mit diesen interagieren. Jegliche Hinweise werden dankbar angenommen.

Den geheimen Grund dafür ist, dass wir uns nicht geändert, unser Wrapper "Alter" und auch nicht Microsoft, die mit Ihren alten APIs, aber wir werden das erneute kompilieren der DLL entsprechen, die app-version auf jeder Version, die wir machen. Ich möchte diesen Prozess zu automatisieren, anstatt verlassen sich auf zwei Maschinen.

Ich kann nicht entfernen Sie die DLL aus dem Projekt (keiner von Ihnen), weil es Abhängigkeiten.

Ich könnte einen " Dritten "master-wrapper" doch nicht etwa gedacht haben, es noch.

Irgendwelche Ideen? Jemand anderes mit der gleichen Anforderung?

UPDATE

Klären:

Habe ich 1-Lösung mit N-Projekte.

"Anwendung" + Office11Wrapper.dll + Office12Wrapper.dll.

Beide "Wrapper" benutzen Abhängigkeiten für die Anwendung + anderen Bibliotheken in der Lösung (datalayer, businesslayer, Rahmen, etc.)

Jeder wrapper verfügt über Referenzen, die für die jeweiligen Office-Paket (2003 und 2007).

Wenn ich kompilieren und nicht office 12 installiert ist, bekomme ich Fehler aus Office12Wrapper.dll nicht, dass man die Office 2007-Bibliotheken.
Also was ich habe sind zwei Gebäude, Maschinen, eine mit Office 2003, bei Office 2007. Nach einem kompletten SVN update + kompilieren auf jedem Rechner, verwenden wir nur office12.dll in der "installer", um den wrapper kompiliert gegen die "gleicher code, gleiche version".

Hinweis: Die Office-2007-Aufbau-Maschine, hat der Wrapper für Office 2003 - "entladen" - und Umgekehrt.

Vielen Dank im Voraus.

  • Ich fixe den link in meiner Antwort, die Punkte zu einem MS-Artikel auf, wie zu installieren, die zwei side-by-side.
Schreibe einen Kommentar