2009-05-12 11 views
6

Derzeit ist unser .net-Code nicht prozessorspezifisch, sondern von Bibliotheken (Oracle/ODP.Net) abhängig. Wir haben eine Lösung gefunden, bei der wir die csproj-Datei direkt bearbeiten und die Referenzen in Artikelgruppen mit einer Bedingungsklausel basierend auf unserer ausgewählten Build-Konfiguration einfügen. Wir haben 32-Bit-Debug/Release und 64-Bit-Debug/Release, und die richtigen Assemblies sind Referenzen, wenn Sie diese Konfiguration erstellen.Bedingte Referenzen

Dies funktioniert mehr oder weniger zum Zeitpunkt der Erstellung, aber es verursacht alle Arten von Verrücktheit in Visual Studio (2008). Das Endergebnis ist, dass die gleiche Baugruppe vier Mal unter Referenzen auftaucht und drei das gelbe Ausrufezeichen haben. Es erzeugt auch einige 76 Warnungen, die ich nicht loswerden kann. Wir versuchen, auf 0 Warnungen zu zielen, weil wir wissen wollen, wenn neue erscheinen, also ist das ein kleines Problem.

Kennt jemand eine Lösung für bedingte Referenzen, die es ermöglichen, dass es wie eine einzige Referenz aussieht (was es wirklich ist) und meine Warnungen zur Build-Zeit nicht füllt?

Antwort

1

Das einzige, was in den Sinn springt ist 4 separate Projektdateien mit ... aber bevor Sie mit Panik 4-Dateien zu erhalten, wann immer Sie eine Klasse hinzufügen, können Sie einen anderen csproj Trick verwenden:

<Compile Include="**\*.cs" /> 

die (IIRC) sagt "alle cs-Dateien auf jeder Ebene in der Ordnerstruktur enthalten".

1

Wir fanden eine Antwort, die ein bisschen anders war als das, was wir suchten, aber ich mag es irgendwie. Wenn Sie dies Ihre Konfigurationsdatei unter runtime- hinzufügen> assembly

 
<dependentAssembly> 
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" /> 
<bindingRedirect oldVersion="2.111.6.20" newVersion="2.111.6.0" /> 
</dependentAssembly> 

Dann wird die 64-Bit und 32-Bit-Versionen arbeiten mit dem gleichen Build. Alles, was wir tun müssen, ist nicht Oracle.DataAccess.dll lokal kopieren, wenn wir bereitstellen und lassen Sie es aus dem GAC ziehen.

Danke!