6

Ho creato un nuovo progetto C++/CLI in Visual Studio 2012, con .NET 2.0 selezionato come framework nella pagina di creazione del progetto. Ho verificato che le "dipendenze esterne" (mscorlib.dll, System.Data.dll, System.dll e System.XML.dll) mostrano "Percorso" come c:\Windows\Microsoft.NET\Framework\v2.0.50727\*.Il nuovo progetto .NET 2.0 C++/CLI ha una dipendenza implicita da mscorlib v4?

Quando si aggiunge un riferimento a questo progetto da un progetto C# .NET 2.0 nella stessa soluzione, al momento della compilazione il compilatore non può collegare contro la mia libreria C++ con il seguente errore:

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

Tuttavia, come ho detto, i riferimenti nel progetto 'Win32Interop' indicano chiaramente che v2.0 è stato utilizzato, e il file di progetto stesso contiene <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> come dovrebbe.

Perché Visual Studio 2012 mi dà un momento così difficile?

EDIT

Il mistero si approfondisce. Quando si tenta di rimuovere tutti e quindi aggiungere nuovamente i riferimenti .NET nel progetto C++/CLI, questo è quello che mostra:

Adding new dependency

Come si può vedere, in cima si dice "Targeting: .NET Framework 2.0 "e la colonna" Versione "indica che sto selezionando la versione" 2.0.0.0 ".

Tuttavia, dopo aver fatto clic su OK, questo è ciò che la lista si presenta come riferimenti:

.NET dependency list

Resta il quadro mirato" .NETFramework, Version = v2.0" , ma i singoli riferimenti indicano che ogni versione "4.0.0.0" è in uso (insieme ai token delle chiavi pubbliche per quella versione del file).

Tuttavia, la finestra di dialogo delle proprietà quando si seleziona ciascun riferimento mantiene assolutamente che il file v2.0 è in uso. A chi credere? Cosa fare?

+1

Run ildasm.exe sul gruppo Win32Interop.dll per verificare le ipotesi. –

+0

Hai ragione, sta usando v4. Tuttavia, si prega di fare riferimento alla mia domanda aggiornata - Non posso farne uso altro. –

+0

Molto difficile indovinare come ciò potrebbe andare storto. Pubblica il tuo file vcxproj su un servizio file se vuoi che qualcuno lo dia un'occhiata. –

risposta

Problemi correlati