Nhắm mục tiêu .NET Framework 4.5 qua Visual Studio 2010


169

Hôm nay tôi đã cài đặt .NET Framework 4.5 trên máy của mình, hy vọng có thể sử dụng nó từ Visual Studio 2010, vì đây chỉ là một bản cập nhật nhỏ không gây ra sự cố cho Visual Studio 2010. Thật không may, tôi thậm chí không gỡ bỏ thủ công 4.0 và thêm 4,5 hội đồng tương ứng dẫn đến các hội đồng 4.0 ban đầu vẫn được tham chiếu trong dự án.

Có thể nhắm mục tiêu phiên bản 4.5 từ Visual Studio 2010 không và nếu có, làm thế nào? Tôi thực sự muốn sử dụng ruy băng ...


Bạn phải nâng cấp lên Visual Studio 2012 để hỗ trợ .NET v4.5.
Arran

Tôi đã biết về giới hạn này khi tôi đang cố gắng sử dụng phương thức System.Threading.T Nhiệm.Task.Run () trong một ứng dụng bảng điều khiển VS 2010. Phương thức này không hiển thị trên lớp Nhiệm vụ nếu dự án của bạn đang nhắm mục tiêu .Net framework 4.0 và sau đó bạn nhận ra rằng VS2010 không thể nhắm mục tiêu .Net framework 4.5 nếu bạn muốn.
RBT

Câu trả lời:


194

Mỗi phiên bản Visual Studio trước Visual Studio 2010 được gắn với một khung .NET cụ thể. (VS2008 là .NET 3.5, VS2005 là .NET 2.0, VS2003 là .NET1.1) Visual Studio 2010 và ngoài việc cho phép nhắm mục tiêu các phiên bản khung trước nhưng không thể được sử dụng cho các bản phát hành trong tương lai. Bạn phải sử dụng Visual Studio 2012 để sử dụng .NET 4.5.


9
Không hoàn toàn đúng - .NET 3.0 được phát hành giữa các phiên bản VS và có thể được sử dụng trong VS2005.
Sly Gryphon

9
Thật là một câu hỏi hóc búa: di chuyển đến vs2012 + để sử dụng .net 4.5 với chi phí mất Dự án thiết lập vs2010 yêu quý để triển khai trình cài đặt msi ... "nâng cấp" có cảm giác giống như một sự thay thế ...
ecoe

6
@ecoe - Có một 2013 mở rộng VS đó sẽ đem lại Setup & Triển khai loại dự án: visualstudiogallery.msdn.microsoft.com/...
ajawad987

2
Điều này là không đúng. Bạn không phải nâng cấp để sử dụng tính năng này. Tất cả những gì bạn cần làm là thêm một tham chiếu mới, sau đó duyệt đến thư mục .NET 4.5: C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \\. Net Framework \ 4.5. Bạn sẽ tìm thấy các tài liệu tham khảo trong đó. Chỉ cần thêm nó và nó hoạt động
Hermes Trismegistus

2
@HermesTrismegistus trong VS 2010 Tôi nhấp vào "Target Framework = Cài đặt các khung khác" và nó đưa tôi đến một trang web microsoft.com/net/doad/visual-studio-sdks Nó không cho phép tôi điều hướng đến bất kỳ thư mục nào. Tôi nên làm gì. tôi phải có thể nhắm mục tiêu 4,5 từ VS 2010. Tks.
Echeban

67

Có những kịch bản khá hạn chế mà tôi có thể nghĩ về việc điều này sẽ hữu ích ở đâu, nhưng giả sử bạn không thể có tiền để mua VS2012 hoặc thứ gì đó có hiệu lực. Nếu đó là trường hợp và bạn có Windows 7+ và VS 2010, bạn có thể sử dụng bản hack sau mà tôi kết hợp với nhau dường như hoạt động (nhưng tôi chưa triển khai đầy đủ một ứng dụng bằng phương pháp này).

  1. Sao lưu tập tin dự án của bạn !!!

  2. Tải xuống và cài đặt SDK Windows 8 bao gồm .NET 4.5 SDK.

  3. Mở dự án của bạn trong VS2010.

  4. Tạo một tệp văn bản trong dự án của bạn có tên Compile_4_5_CSharp.targetsvới nội dung sau đây. (Hoặc chỉ cần tải xuống tại đây - Đảm bảo xóa phần mở rộng ".txt" khỏi tên tệp):

    <Project DefaultTargets="Build"
     xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    
        <!-- Change the target framework to 4.5 if using the ".NET 4.5" configuration -->
        <PropertyGroup Condition=" '$(Platform)' == '.NET 4.5' ">
            <DefineConstants Condition="'$(DefineConstants)'==''">
                TARGETTING_FX_4_5
            </DefineConstants>
            <DefineConstants Condition="'$(DefineConstants)'!='' and '$(DefineConstants)'!='TARGETTING_FX_4_5'">
                $(DefineConstants);TARGETTING_FX_4_5
            </DefineConstants>
            <PlatformTarget Condition="'$(PlatformTarget)'!=''"/>
            <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
        </PropertyGroup>
    
        <!-- Import the standard C# targets -->
        <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
    
        <!-- Add .NET 4.5 as an available platform -->
        <PropertyGroup>
           <AvailablePlatforms>$(AvailablePlatforms),.NET 4.5</AvailablePlatforms>
        </PropertyGroup>
    </Project>
    
  5. Dỡ bỏ dự án của bạn (nhấp chuột phải -> dỡ tải).

  6. Chỉnh sửa tệp dự án (nhấp chuột phải -> Chỉnh sửa * .csproj).

  7. Thực hiện các thay đổi sau trong tệp dự án:

    a. Thay thế mặc định Microsoft.CSharp.targetsbằng tệp đích được tạo ở bước 4

    <!-- Old Import Entry -->
    <!-- <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> -->
    
    <!-- New Import Entry -->
    <Import Project="Compile_4_5_CSharp.targets" />
    

    b. Thay đổi nền tảng mặc định thành.NET 4.5

    <!-- Old default platform entry -->
    <!-- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> -->
    
    <!-- New default platform entry -->
    <Platform Condition=" '$(Platform)' == '' ">.NET 4.5</Platform>
    

    c. Thêm AnyCPUnền tảng để cho phép nhắm mục tiêu các khung công tác khác như được chỉ định trong thuộc tính dự án. Điều này nên được thêm ngay trước <ItemGroup>thẻ đầu tiên trong tệp

    <PropertyGroup Condition="'$(Platform)' == 'AnyCPU'">
        <PlatformTarget>AnyCPU</PlatformTarget>
    </PropertyGroup>
    
    .
    .
    .
    <ItemGroup>
    .
    .
    .
    
  8. Lưu các thay đổi của bạn và đóng *.csprojtệp.

  9. Tải lại dự án của bạn (nhấp chuột phải -> Tải lại dự án).

  10. Trong trình quản lý cấu hình (Build -> Trình quản lý cấu hình), đảm bảo nền tảng ".NET 4.5" được chọn cho dự án của bạn.

  11. Vẫn trong trình quản lý cấu hình, tạo một nền tảng giải pháp mới cho ".NET 4.5" (bạn có thể căn cứ vào "Bất kỳ CPU" nào) và đảm bảo ".NET 4.5" được chọn cho giải pháp.

  12. Xây dựng dự án của bạn và kiểm tra lỗi.

  13. Giả sử bản dựng hoàn thành, bạn có thể xác minh rằng bạn thực sự đang nhắm mục tiêu 4.5 bằng cách thêm một tham chiếu đến một lớp cụ thể 4.5 vào mã nguồn của bạn:

    using System;
    using System.Text;
    
    namespace testing
    {
        using net45check = System.Reflection.ReflectionContext;
    }
    
  14. Khi bạn biên dịch bằng nền tảng ".NET 4.5", quá trình xây dựng sẽ thành công. Khi bạn biên dịch dưới nền tảng "Bất kỳ CPU", bạn sẽ gặp lỗi trình biên dịch:

    Error 6: The type or namespace name 'ReflectionContext' does not exist in
    the namespace 'System.Reflection' (are you missing an assembly reference?)
    

3
Điều này thật khó hiểu, ngay cả khi nó hoạt động, liệu các thành phần UI như trình thiết kế ruy băng có hoạt động mà không có khối lượng xaml và các lỗi khác không? chỉ cần nâng cấp.
Loại ẩn danh

1
Ngoài câu trả lời của David Woodward, tôi đã thêm: <OutputPath>bin\</OutputPath>vào Nhóm tài sản đầu tiên, khi xảy ra lỗi dưới đây: Thuộc tính OutputPath không được đặt cho 'tên dự án' của dự án.
mparkuk

Điều này thực sự hoạt động. Nhưng tôi chỉ đang sử dụng nó để tôi có thể tiếp tục chạy Moles trên VS2010 sau khi cài đặt .NET Framework 4.5.1.
Conrad Clark

1
Tôi không thể tìm ra cách thực hiện thành công bước 11, "... tạo một nền tảng giải pháp mới ...", nhưng tôi thấy rằng các hướng dẫn đã thành công chung nếu bước 11 bị bỏ qua.
Tony Pulokas

8

FYI, nếu bạn muốn tạo gói Trình cài đặt trong VS2010, thật không may, nó chỉ nhắm mục tiêu .NET 4. Để giải quyết vấn đề này, bạn phải thêm NET 4.5 làm điều kiện khởi chạy.

Thêm phần sau vào Điều kiện khởi chạy của trình cài đặt (Nhấp chuột phải, Xem, Điều kiện khởi chạy).

Trong "Máy mục tiêu tìm kiếm", nhấp chuột phải và chọn "Thêm tìm kiếm đăng ký".

Property: REGISTRYVALUE1
RegKey: Software\Microsoft\NET Framework Setup\NDP\v4\Full
Root: vsdrrHKLM
Value: Release

Thêm "Điều kiện khởi chạy" mới:

Condition: REGISTRYVALUE1>="#378389"
InstallUrl: http://www.microsoft.com/en-gb/download/details.aspx?id=30653
Message: Setup requires .NET Framework 4.5 to be installed.

Ở đâu:

378389 = .NET Framework 4.5

378675 = .NET Framework 4.5.1 được cài đặt với Windows 8.1

378758 = .NET Framework 4.5.1 được cài đặt trên Windows 8, Windows 7 SP1 hoặc Windows Vista SP2

379893 = .NET Framework 4.5.2

Tham chiếu điều kiện khởi chạy: http://msdn.microsoft.com/en-us/l Library / vstudio / xxyh2e6a (v = vs.100) .aspx


3

Tôi đã vật lộn với tích hợp VS2010 / DNFW 4.5 và cuối cùng đã hoạt động được. Bắt đầu từ VS 2008, bộ đệm của các bộ lắp ráp đã được giới thiệu được sử dụng bởi Visual Studio có tên là "Bộ sưu tập được tham chiếu". Bộ đệm bộ đệm cho VS 2010 này được đặt tại \ Reference Assemblies \ Microsoft \ Framework.NetFramework \ v4.0. Visual Studio tải các cụm khung từ vị trí này thay vì từ thư mục cài đặt khung. Khi Microsoft nói rằng VS 2010 không hỗ trợ DNFW 4.5, ý nghĩa của chúng là thư mục này không được cập nhật khi cài đặt DNFW 4.5. Khi bạn đã thay thế các tệp ở vị trí này bằng các tệp DNFW 4.5 được cập nhật, bạn sẽ thấy rằng VS 2010 sẽ hoạt động vui vẻ với DNFW 4.5.


0

Từ một tìm kiếm khác. Đã làm cho tôi!

"Bạn có thể sử dụng Visual Studio 2010 và nó hỗ trợ nó, miễn là HĐH của bạn hỗ trợ .NET 4.5.

Nhấp chuột phải vào giải pháp của bạn để thêm một tài liệu tham khảo (như bạn làm). Khi hộp thoại hiển thị, chọn duyệt, sau đó điều hướng đến thư mục sau:

C: \ Tệp chương trình (x86) \ Tập hợp tham chiếu \ Microsoft \ Framework \ .Net Framework \ 4.5

Bạn sẽ tìm thấy nó ở đó. "


6
Trong câu "Bạn sẽ tìm thấy nó ở đó", "nó" là gì? Tập tin nào trong thư mục đó chúng ta chọn? Một trong số họ có cho phép chúng tôi nhắm mục tiêu .net 4.5 trong VS 2010 không?
Jeff Roe

Bạn sẽ tìm thấy các cụm không gian tên. Bạn có thể thêm bất cứ thứ gì bạn muốn. Ví dụ, tôi cần sử dụng một phương thức để làm việc với các tệp ZIP. Vì vậy, tôi đã tìm thấy dll "System.IO.Compression.dll" và thêm nó vào dự án của tôi. Sau đó, tôi có thể liệt kê rõ ràng không gian tên trong mã của mình và sử dụng các phương thức tôi cần.
Hermes Trismegistus

1
Điều này không làm việc cho tôi. Nếu bạn xóa tham chiếu của mình sang Hệ thống, sau đó duyệt đến .Net 4.5 System.dll và thêm vào đó làm tham chiếu, VS vẫn chọn câu trả lời 4.0 System.dll Capt Nasty trên trang này hoạt động với tôi, ví dụ: sao chép System.dll từ C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.6 và thả nó lên trên System.dll trong C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Khung \ .NETFramework \ v4.0. Lưu ý rằng đây là một hack khó chịu và có thể có hậu quả không lường trước được.
Jinlye
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.