2013-02-08 6 views
6

Ich bekomme diesen Fehler beim Verknüpfen eines Visual C# .NET Framework 4.0 unterstützte Projekt, als ich eine Referenz der C++ CLR DLL mit 4.5 .NET Framework hinzugefügt.Downgrade .NET Framework 4.5 auf 4 in Visual Studio 2012 für C++ CLR unterstützt DLL-Projekt?

error CS0246: The type or namespace name 'project' could not be found (are you missing a using directive or an assembly reference?) 

Als Ergebnis, wie kann ich Herabstufung .NET Framework 4.0 4.5 in Visual Studio 2012 für diese C++ CLR-DLL-Projekt unterstützt?

Ich habe gesehen, bevor das die Ursache war. Für meine C++, kann diese Verbindung meine Sache http://msdn.microsoft.com/en-us/library/bb772098(v=vs.90).aspx

ich diese Warnung gerade entdeckt, wie gut helfen:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1578,5): warning MSB3274: The primary reference "X" could not be resolved because it was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0". 

Wer schon gesehen? Also, wie ich die C++ DLL herunterstufen?

Dank

+0

Alter - wovon redest du? 1) Sie sollten in der Lage sein, Ihr Projekt so zu konfigurieren, dass es fast jede Version von .NET richtet, die Sie wollen, und 2) basierend auf den begrenzten Informationen, die Sie gaben, bin ich nicht einmal davon überzeugt, dass Ihr Build-Fehler notwendigerweise .Net-Version ist. VORSCHLAG: Finde heraus, woher "Projekt" in deinem ursprünglichen Projekt kam. Hinterlegte Details. – paulsm4

+0

Ich habe die Frage aktualisiert, aber ich entwickelte diese andere C++ DLL –

Antwort

11

Die C++ IDE unterstützt nicht mehr Targeting für NET-Projekte. Sie müssen die .vcxproj von Hand bearbeiten. Schließen Sie das Projekt, wenn Sie es geöffnet haben und öffnen Sie die .vcxproj in einem Texteditor. Suchen Sie diese Zeile:

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> 

und ändern Sie sie zu "v4.0". Öffnen Sie das Projekt erneut in VS. Projekt + Eigenschaften, Gemeinsame Eigenschaften, Framework und Referenzen. Wählen Sie "System" in der Liste und überprüfen Sie die Relative Path-Eigenschaft. Es sollte jetzt auf die Version 4.0 hinweisen.

Hüten Sie sich vor einem wichtigen Problem und dem Hauptgrund, dass die C++ IDE Multi-Targeting nicht unterstützt. Es gibt ein Problem mit der 10, es lädt Assemblys aus dem Unterverzeichnis c: \ windows \ microsoft.net. Dadurch wird eine .NET 4.5-Assembly anstelle der 4.0-Assembly geladen, die Sie bei der Ausrichtung auf 4.0 verwenden möchten. Die 4.0-Referenzassemblys werden in c: \ program files \ reference assemblies gespeichert. Dies kann zu sehr schwer zu diagnostizierenden Laufzeitproblemen führen, die 4.5 Assemblies sind nicht so kompatibel mit den 4.0 Assemblys. Es ist einfach genug, # in Ihrem eigenen Code zu vermeiden, aber es wird in den Headerdateien include/msclr/marshal.h und include/vcclr.h verwendet. Begründen Sie, ob Sie diese Header verwenden.

+0

Cool - das wusste ich nie. Ich benutze MSVS die ganze Zeit ... aber nie für Microsoft (schrecklich, IMHO) "CLI/Managed C++. Gut zu wissen - danke. – paulsm4

+0

Das Problem mit" include/msclr/marshal.h "und" include/vcclr. h "passiert auch, wenn Sie ein C++/CLR-Projekt in VS2012 von 4.5 auf 4.5.1, 4.5.2, 4.6 oder 4.6.1 aktualisieren. – Matthieu

Verwandte Themen