6

Tôi đã tạo một dự án C++/CLI mới trong Visual Studio 2012, với .NET 2.0 được chọn làm khung làm việc trên trang tạo dự án. Tôi đã xác minh "Phụ thuộc bên ngoài" (mscorlib.dll, System.Data.dll, System.dll và System.XML.dll) hiển thị "Đường dẫn" là c:\Windows\Microsoft.NET\Framework\v2.0.50727\*.Dự án .NET 2.0 C++/CLI mới có phụ thuộc ngầm trên mscorlib v4?

Khi thêm một tham chiếu đến dự án này từ một dự án C# .NET 2.0 trong cùng một giải pháp, ít thời gian xây dựng trình biên dịch không thể liên kết với C của tôi ++ thư viện với các lỗi sau:

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

Tuy nhiên, như tôi cho biết, các tài liệu tham khảo trong dự án 'Win32Interop' rõ ràng chỉ ra v2.0 đã được sử dụng, và tập tin dự án chính nó chứa <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> như nó cần.

Tại sao Visual Studio 2012 lại cho tôi một thời gian khó khăn như vậy?

EDIT

Bí ẩn làm sâu sắc thêm. Khi cố gắng để loại bỏ tất cả và sau đó lại thêm tài liệu tham khảo NET trong dự án C++/CLI, đây là những gì cho thấy:

Adding new dependency

Như bạn có thể thấy, ở phía trên nó nói "Nhắm mục tiêu: .NET Framework 2.0 "và cột" Phiên bản "cho biết rằng tôi đang chọn phiên bản" 2.0.0.0 ".

Tuy nhiên, khi nhấn OK, đây là những gì trong danh sách tài liệu tham khảo hình như:

.NET dependency list

Khung mục tiêu vẫn" .NETFramework, Version = v2.0" nhưng tài liệu tham khảo cá nhân từng chỉ ra rằng phiên bản "4.0.0.0" đang được sử dụng (cùng với mã thông báo khóa công khai cho phiên bản của tệp đó).

Hộp thoại thuộc tính khi chọn từng tham chiếu hoàn toàn duy trì rằng tệp v2.0 đang được sử dụng. Ai để tin? Phải làm gì?

+1

Chạy ildasm.exe trên bộ phận Win32Interop.dll để xác minh giả định. –

+0

Bạn nói đúng, nó đang sử dụng v4. Tuy nhiên, vui lòng tham khảo câu hỏi được cập nhật của tôi - Tôi không thể làm cho nó sử dụng bất cứ điều gì khác. –

+0

Rất khó để đoán làm thế nào mà có thể đi sai. Đăng tệp vcxproj của bạn lên dịch vụ tệp nếu bạn muốn ai đó xem qua nó. –

Trả lời