Stworzyłem nowy projekt C++/CLI w Visual Studio 2012, z .NET 2.0 wybranym jako framework na stronie tworzenia projektu. Zweryfikowałem "Zewnętrzne zależności" (mscorlib.dll, System.Data.dll, System.dll i System.XML.dll), pokazując "Ścieżkę" jako c:\Windows\Microsoft.NET\Framework\v2.0.50727\*
.Nowy projekt .NET 2.0 C++/CLI ma ukrytą zależność od mscorlib v4?
Dodając odwołanie do tego projektu z projektu w tym samym roztworze C# .NET 2.0, w czasie kompilacji kompilator nie może połączyć przeciwko moim C++ biblioteki z powodu następującego błędu:
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
Jednak, jak już powiedział, referencje w projekcie "Win32Interop" wyraźnie wskazują, że użyto v2.0, a sam plik projektu zawiera <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
, tak jak powinien.
Dlaczego program Visual Studio 2012 sprawia mi tyle trudu?
EDYTOWANIE
Tajemnica pogłębia się. Kiedy próbuje zdjąć i ponownie dodać referencje .NET w projekcie C++/CLI, to co pokazuje:
Jak widać, na górze jest napisane „Kierowanie: .NET Framework 2.0 "i" Wersja "wskazuje, że wybieram wersję" 2.0.0.0 ".
Jednak po kliknięciu OK, to co lista odnośników wygląda następująco:
Docelowa struktura pozostaje”.NETFramework, Version = v2.0" , ale poszczególne referencje wskazują, że każda wersja Używa się "4.0.0.0" (wraz z tokenami klucza publicznego dla tej wersji pliku).
Jednak okno dialogowe właściwości podczas wybierania każdej referencji absolutnie utrzymuje, że używany jest plik v2.0. Kogo wierzyć? Co robić?
Run ildasm.exe na zespole Win32Interop.dll zweryfikowania założeń. –
Masz rację, używa v4. Proszę jednak zapoznać się z moim zaktualizowanym pytaniem - nie mogę sprawić, by było ono używane w inny sposób. –
Bardzo trudno zgadnąć, jak to mogło pójść nie tak. Opublikuj plik vcxproj w usłudze plików, jeśli chcesz, aby ktoś go obejrzał. –