2013-02-08 88 views
6

Tôi nhận được lỗi này khi liên kết một dự án hỗ trợ Visual C# .NET framework 4.0 khi tôi thêm một tham chiếu của C++ CLR DLL với 4.5 .NET Framework.Hạ cấp .NET framework 4.5 đến 4 trong Visual Studio 2012 cho C++ CLR hỗ trợ dự án DLL?

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

Kết quả là, làm cách nào để hạ cấp Khuôn khổ .NET 4.5 xuống 4.0 trong Visual Studio 2012 cho dự án DLL C++ CLR được hỗ trợ này?

Tôi đã thấy điều này trước đó là nguyên nhân. Đối với C++ của tôi, liên kết này có thể giúp ra nguyên nhân của tôi http://msdn.microsoft.com/en-us/library/bb772098(v=vs.90).aspx

Tôi chỉ phát hiện ra cảnh báo này cũng như:

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". 

Bất cứ ai nhìn thấy điều này trước đây chưa? Vậy làm thế nào tôi hạ cấp DLL C++?

Cảm ơn

+0

Dude - bạn đang nói về cái gì? 1) Bạn sẽ có thể cấu hình dự án của bạn để nhắm mục tiêu khá nhiều phiên bản .Net bạn muốn và 2) dựa trên thông tin giới hạn mà bạn đã cung cấp, tôi thậm chí không thuyết phục lỗi xây dựng của bạn nhất thiết là phiên bản .Net liên quan. SUGGESTION: tìm ra nơi "dự án" đến từ, trong dự án ban đầu của bạn. Đăng lại chi tiết. – paulsm4

+0

Tôi đã cập nhật câu hỏi nhưng tôi đã phát triển C++ DLL khác –

Trả lời

11

C++ IDE không hỗ trợ đa mục tiêu cho các dự án NET. Bạn sẽ cần phải chỉnh sửa .vcxproj bằng tay. Đóng dự án nếu bạn mở nó và mở tệp .vcxproj trong trình soạn thảo văn bản. Tìm dòng này:

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> 

và sửa đổi thành "v4.0". Mở lại dự án trong VS. Dự án + Thuộc tính, Thuộc tính chung, Khung và Tài liệu tham khảo. Chọn "Hệ thống" trong danh sách và kiểm tra thuộc tính Đường dẫn tương đối. Nó bây giờ sẽ trỏ đến phiên bản 4.0.

Hãy cẩn thận với một vấn đề quan trọng và lý do chính khiến IDE C++ không hỗ trợ nhắm mục tiêu đa. Đã xảy ra sự cố với #using directive, nó tải cụm từ thư mục con c: \ windows \ microsoft.net. Mà sẽ làm cho nó tải một lắp ráp .NET 4.5 thay vì lắp ráp 4.0 mà bạn muốn khi bạn nhắm mục tiêu 4.0. Các assembly tham chiếu 4.0 được lưu trữ trong các c: \ program files \ reference assembly. Điều này có thể gây ra rất khó để chẩn đoán các vấn đề thời gian chạy, các hội đồng 4.5 không tương thích với các hội đồng 4.0. Nó đủ dễ dàng để tránh # sử dụng trong mã của riêng bạn nhưng nó được sử dụng trong tệp include/msclr/marshal.h và bao gồm/vcclr.h. Ngăn chặn emptor nếu bạn sử dụng các tiêu đề.

+0

Cool - Tôi chưa bao giờ biết điều đó. Tôi sử dụng MSVS tất cả các thời gian ... nhưng không bao giờ cho Microsoft (khủng khiếp, IMHO) "CLI/Managed C++. Tốt để biết - cảm ơn bạn. – paulsm4

+0

Vấn đề với" bao gồm/msclr/marshal.h "và" include/vcclr. h "cũng xảy ra nếu bạn nâng cấp dự án C++/CLR từ 4.5 lên 4.5.1, 4.5.2, 4.6 hoặc 4.6.1 trong VS2012. – Matthieu

Các vấn đề liên quan