2010-05-27 33 views
146

Vì tôi đã nâng cấp dự án của mình lên định dạng dự án studio hình ảnh 2010, dự án C++/CLI của tôi được nhắm mục tiêu đến .net framework 4.0. Thật dễ dàng để chuyển phiên bản khung thành phiên bản khác từ dự án C#, nhưng tôi không có đầu mối làm thế nào để thực hiện điều này trong dự án C++/CLI, tôi không thấy cài đặt này trong trang thuộc tính dự án.Thay đổi dự án C++/CLI sang một khung công tác khác hơn 4.0 với vs2010

Trả lời

181

này xuất hiện khi bạn nhấn F1 trong khung và tài liệu tham khảo thoại:

Theo mặc định cho các dự án mới, khuôn khổ mục tiêu được thiết lập để .NET Framework 4. IDE không hỗ trợ sửa đổi khung được nhắm mục tiêu, nhưng bạn có thể thay đổi nó theo cách thủ công. Trong tệp dự án (.vcxproj), khung được nhắm mục tiêu mặc định được thể hiện bằng phần tử thuộc tính v4.0. Để thay đổi khung được nhắm mục tiêu, dỡ bỏ dự án, hãy sử dụng trình soạn thảo văn bản để mở tệp dự án và sau đó thay đổi giá trị của phần tử property từ v4.0 sang phiên bản khác được cài đặt trên máy chủ của bạn. Ví dụ, nếu bạn chỉ định v3.5, đại diện cho Khuôn khổ .NET v3.5, Visual Studio 2008 SP1 phải được cài đặt. Lưu và đóng tập tin, tải lại dự án và xác minh rằng khuôn khổ mục tiêu được hiển thị trong trang bất động sản. *

Đó không phải là khủng khiếp chính xác về dự án được chuyển đổi, bạn sẽ có thêm các yếu tố <TargetFrameworkVersion> mình. Đặt nó trong PropertyGroup nhãn "Globals":

<PropertyGroup Label="Globals"> 
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> 
    <others...> 
    </PropertyGroup> 

Câu chuyện là khác nhau khi bạn sử dụng VS2012 trở lên, phiên bản đầu tiên của VS mà mua Nền tảng Toolset thiết lập trong trang thuộc tính chung. Sau đó, bạn phải chọn "v90" để có được bản dựng phù hợp nhắm mục tiêu 3,5.Đó là tuy nhiên vụng về, bạn phải có tất cả các phiên bản trung gian của VS được cài đặt trên máy để có lựa chọn đó.

Tại sao bạn cần cài đặt VS2008 yêu cầu giải thích bằng chính nó. Vấn đề cốt lõi là thư viện thời gian chạy C (msvcrt100.dll và lên) chứa mã .NET để hỗ trợ thực thi mã được quản lý. Các chi tiết quan trọng là một bộ khởi tạo mô-đun đảm bảo CRT được khởi tạo chính xác trong chương trình sử dụng mã C++/CLI. Mã đó luôn nhắm mục tiêu .NET 4 và vì nó được nướng vào msvcrt100.dll (và lên), bạn luôn có sự phụ thuộc vào rock-hard trên thời gian chạy v4.0.30319. Bạn chỉ có thể có sự phụ thuộc v2.0.50727 thuần túy khi bạn sử dụng thời gian chạy C cũ, msvcrt90.dll. Bạn chỉ có thể chắc chắn rằng bạn có một phụ thuộc msvcrt90.dll khi bạn sử dụng #include của trình biên dịch của VS2008.

Thực tế khó khăn là rất cần thiết để chuyển sang .NET 4 sớm, bạn sẽ gặp khó khăn với các vấn đề về xây dựng như thế này nếu bạn không. Có rất ít trở ngại thực tế đối với điều đó, .NET 4 có sẵn miễn phí trên tất cả các mục tiêu mà bạn tưởng tượng. Vượt qua FUD có liên quan đến việc chuyển sang phiên bản thời gian chạy cao hơn thường chỉ là vấn đề thực sự. Không có lý do cho sự sợ hãi và nghi ngờ, nó là ổn định.

+8

Bây giờ tôi đã thực hiện các bước này nhưng bây giờ tôi gặp lỗi "MSB8009: .NET Framework 2.0/3.0/3.5 nhắm mục tiêu bộ công cụ nền tảng v90. Hãy đảm bảo rằng Visual Studio 2008 được cài đặt trên máy". Tôi không có VS2008. – codymanix

+8

Trích dẫn từ câu trả lời của tôi: * "Visual Studio 2008 SP1 phải được cài đặt". * Bạn đang thiếu các công cụ xây dựng cần thiết. –

+2

Có thể bạn cũng sẽ cần xóa tệp .suo và giải pháp mở lại. Như trong trường hợp của tôi. – alehro

18

Có nó có thể thay đổi mục tiêu ngay cả đối với quản lý C++ Dự án:

Thay đổi khung Target NET cho C++/CLI (VS 2010) Để thay đổi phiên bản của .NET Framework cho C++/CLI dự án (VS 2010)

nhấp chuột phải vào dự án trong Solution Explorer và nhấp vào dự án Unload nhấp chuột phải vào dự án dỡ trong Solution Explorer và chọn Edit <projectname>.vcxproj Trong dự án XML tập tin xác định vị trí nút <PropertyGroup Label="Globals"> Trong nút đó xác định vị trí nút <TargetFrameworkVersion> (nếu nút không thể được tìm thấy, thêm nó) Nội văn bản của nút xác định mục tiêu khuôn khổ. Nó có thể là v2.0, v3.0, v3.5 hoặc v4.0 Lưu tập tin vcxproj và đóng nó Nhấp chuột phải vào dự án dỡ trong Solution Explorer và nhấn Reload Dự án Ví dụ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

Lưu ý: Những các bước chỉ áp dụng cho Visual Studio 2010 vì nó sử dụng định dạng mới của tệp dự án C++.

Source on MSDN: How to: Change the Target .NET Framework

0

Trong VS 2010 nếu bộ công cụ được cài đặt, hãy chuyển đến thuộc tính dự án-> cấu hình thuộc tính-> chung và thay đổi Platform Toolset từ v90 thành v100.

5

bởi một người dùng vô danh:

(Editing vì tôi là một người dùng mới và không thể đáp ứng với điều này, bất cứ ai nhìn thấy điều này cảm thấy tự do để nộp sau) Thay đổi Toolset để V100 thực sự gây VS2010 để nhắm mục tiêu. NET 4.0, mặc dù nó vẫn sẽ hiển thị như nhắm mục tiêu 3,5 trong thuộc tính dự án. VS2010 sẽ thực sự nhổ ra một cảnh báo về điều này, bởi vì hiện tại nó xuất hiện như bạn mặc dù bạn có thể nhắm mục tiêu .NET 3.5 với bộ công cụ v100, mà bạn không thể.

+0

Điều này là do đa nhắm mục tiêu chỉ cho phép bạn nhắm mục tiêu V2.0, 3.0, 3.5 và 4.0; Các phiên bản 1.x của .Net không thể được nhắm mục tiêu theo cách này –

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