Visual Studio 2008 und 2010 verhalten sich anders, wenn Referenzierung Baugruppen im Dateisystem?
Frage
Ich bin ein seltsames Phänomen in Visual Studio 2010 zu sehen.
Ihr Projekt-Setup ist dies (ich das geerbt - es kann nicht jederzeit schnell ändern, leider: - ():
-
eine WinForms-Anwendung, die Crystal Reports X verwendet (v10) als Reporting-Engine; vollständige CR X Developer Edition auf meiner Dev-Box installiert
-
mehrere Webforms apps, dass die Verwendung von Crystal Reports XI (v11) als Reporting-Engine - nicht installieren CR XI Vollversion, da es mit CR X Dev Ausgabe kollidiert ....
Um die Dinge Arbeit an unserem Build-Server zu machen, habe ich auch einen Library
Ordner innerhalb des WinForms App Projektverzeichnis mit den CR X Runtime-Dateien erstellt ich brauche, sowie ein Library
Ordner innerhalb des Projektverzeichnis des Web-App mit dem CR XI-Laufzeitdateien.
In VS 2008, ich war in der Lage, die notwendigen Baugruppen aus dem jeweiligen Bibliotheksordner in meinen Winforms Projekten (mehr Klassenbibliotheken usw.) zu holen, und in meinen Web-Anwendungen. Alles hat super funktioniert.
Wenn ich Visual Studio 2010 aktualisiert, jetzt plötzlich sehe ich:
-
in meinen WinForms-Anwendungen, alle Verweise auf CR X-Laufzeitdateien automatisch aktualisiert werden, um die CR X-Dateien aus dem GAC zu verwenden - das ist nicht , was ich will! Es hilft nicht, wenn ich diese Verweise löschen und erneut hinzufügen, sie wieder von zum
Library
Ordner Surfen - wenn ich sie holen, scheint VS2010 zu automagically conver sie GAC Referenzen wieder ... -
in meinen Web-Anwendungen, werden die Dinge noch schlimmer: wenn ich die CR XI Runtime-Baugruppen aus dem
Library
Ordner auswählen, wieder VS2010 scheint automagically dort zu erkennen sind ähnliche Dateien (gleicher Name, aber verschiedene Versionen) in der GAC und verwendet diese Dateien statt - jetzt meine Web-Anwendungen nicht mehr funktionieren .....
Was die h *** los ist mit VS 2010 hier ?? Warum kann es nicht lassen meine Auswahl allein und lassen Sie mich meine Runtime-Dateien aus einem Ordner auswählen Library
statt Beharren auf dem GAC gehen ?? Was hat sich zwischen VS 2008 und VS 2010 in dieser Hinsicht geändert ?? Hat jemand irgendwelche Einblicke in diese ??
Lösung
Es kann sinnvoll sein, entweder
(1) gehen Sie zu Extras \ Options \ Project & Solutions \ Build & Run und MSBuild Änderung Ausführlichkeit zu ‚Diagnose‘ und dann bauen und im Ausgabefenster sehen, wie die MSBuild Referenzauflösungslogik für diese Baugruppen arbeitet. Das heißt, wenn VS nicht bereits getan etwas lächerlich an den zugrunde liegenden CSPROJ Datei
hat (2) zu vergleichen, die XML in der VS2008-Projektdatei im Vergleich zu der VS2010 Projektdatei, um zu sehen, was in dem <Reference>
Knoten
Eine wilde spekulative Vermutung: das VS2010-Projekt „.NET 4.0 Client“ zielt auf (eher als „.NET 4.0 (full-Framework)“, und die Bibliotheken müssen die vollen Rahmen, und MSBuild sieht diese Abhängigkeit und wird unter Verwendung von Ausweich Logik .