Ich habe ein neues C++/CLI-Projekt in Visual Studio 2012 erstellt, wobei .NET 2.0 als Framework auf der Projekterstellungsseite ausgewählt wurde. Ich habe die "External Dependencies" (mscorlib.dll, System.Data.dll, System.dll und System.XML.dll) überprüft, die "Pfad" als c:\Windows\Microsoft.NET\Framework\v2.0.50727\*
angezeigt wird.Neues .NET 2.0 C++/CLI-Projekt hat eine implizite Abhängigkeit von mscorlib v4?
Beim Hinzufügen eines Verweises auf dieses Projekt von einem C# .NET 2.0-Projekt in der gleichen Lösung, der Compiler bei der Erstellung nicht gegen meine C++ Bibliothek mit dem folgenden Fehler verknüpfen kann:
Warning 2 The primary reference "D:\GIT\EasyBCD\Release\Win32Interop.dll" could not be resolved because it has an indirect dependency on the .NET Framework assembly "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which has a higher version "4.0.0.0" than the version "2.0.0.0" in the current target framework. C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.Targets 1578
Jedoch, wie ich Die Referenzen im 'Win32Interop'-Projekt geben eindeutig an, dass v2.0 verwendet wurde, und die Projektdatei selbst enthält <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
, wie es sollte.
Warum ist Visual Studio 2012 so schwierig?
BEARBEITEN
Das Geheimnis vertieft sich. Bei dem Versuch, alle zu entfernen und dann .NET Referenzen im Projekt C++/CLI neu hinzufügen, ist es das, was zeigt:
Wie Sie sehen können, an der Spitze steht „Targeting: .NET Framework 2.0 "und die Spalte" Version "gibt an, dass ich die Version" 2.0.0.0 "auswähle.
jedoch nach dem Klicken auf OK, das ist, was die Referenzliste wie folgt aussieht:
Der gezielte Rahmen „.NETFramework, Version = v2.0" bleibt aber die einzelnen Referenzen zeigen jeweils die Version "4.0.0.0" wird verwendet (zusammen mit den öffentlichen Schlüsseltokens für diese Version der Datei).
Doch der Eigenschaftendialog bei der Auswahl jeder Referenz behält absolut bei, dass die v2.0-Datei verwendet wird. Wem soll ich glauben? Was ist zu tun?
Run ildasm.exe auf der Win32Interop.dll Montage Annahmen zu überprüfen. –
Sie haben Recht, es verwendet v4. Bitte beachten Sie jedoch meine aktualisierte Frage - ich kann nichts anderes machen. –
Sehr schwer zu erraten, wie das schief gehen könnte. Veröffentlichen Sie Ihre vcxproj-Datei in einem Dateidienst, wenn Sie möchten, dass sich jemand die Datei ansieht. –