2012-09-12 27 views
156

Hôm nay tôi đã cài đặt Khuôn khổ .NET 4.5 trên máy của tôi mong muốn có thể sử dụng nó từ Visual Studio 2010, vì nó chỉ là một cập nhật nhỏ mà không đặt ra vấn đề cho Visual   Studio   2010. Thật không may tôi không, thậm chí bằng tay loại bỏ một số 4.0 và thêm 4,5 hội đồng tương ứng dẫn đến hội đồng 4.0 ban đầu vẫn đang được tham chiếu trong dự án.Nhắm mục tiêu Khuôn khổ .NET 4.5 qua Visual Studio 2010

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

+0

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

+0

Tôi đã biết về giới hạn này khi tôi cố gắng sử dụng phương thức System.Threading.Tasks.Task.Run() trong một Ứng dụng giao diện đ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

Trả lời

187

Mỗi phiên bản của Visual Studio trước Visual Studio 2010 được gắn với một khuôn khổ .NET cụ thể. (VS2008 là .NET 3.5, VS2005 là .NET 2.0, VS2003 là .NET1.1) Visual Studio 2010 và hơn thế nữa 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.

+8

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

+1

Đúng, nhưng chỉ bằng cách mở rộng. Nó không được xây dựng vào VS 2005 từ đầu (và, như vậy, không hoàn toàn tối ưu hóa). – thefellow3j

+5

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

63

Có một số trường hợp khá hạn chế mà tôi có thể nghĩ đến điều này sẽ hữu ích ở đâu, nhưng giả sử bạn không thể nhận tiền để mua VS2012 hoặc thứ gì đó có hiệu lực. Nếu trường hợp đó xảy ra 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, nhưng dường như tôi chưa triển khai đầy đủ một ứng dụng bằng phương thức này).

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

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

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

  4. Tạo tệp văn bản trong dự án của bạn có tên Compile_4_5_CSharp.targets với các nội dung sau. (Hoặc chỉ cần tải nó here - Hãy chắc chắn rằng để xóa đuôi ".txt" từ tên tập tin):

    <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 (click chuột phải -> dỡ bỏ).

  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.targets bằ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 nền tảng AnyCPU để cho phép nhắm mục tiêu các khung khác như được chỉ định trong thuộc tính dự án. Điều này cần được bổ sung ngay trước khi <ItemGroup> thẻ đầu tiên trong file

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

  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 -> Configuration Manager) đảm bảo nền tảng ".NET 4.5" được chọn cho dự án của bạn.

  11. Vẫn còn trong trình quản lý cấu hình, hãy tạo nền tảng giải pháp mới cho ".NET 4.5" (bạn có thể căn cứ vào "CPU bất kỳ") 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ử xây dựng hoàn thành, bạn có thể xác minh rằng bạn đang thực sự nhắm mục tiêu 4,5 bằng cách thêm một tham chiếu đến một lớp học cụ thể từ 4,5 đến 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 cách sử dụng" .NET 4.5" nền tảng xây dựng nên thành công. Khi bạn biên dịch dưới nền tảng "Bất kỳ CPU" bạn sẽ nhận được một lỗi 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 là điên cuồng, ngay cả khi nó hoạt động, các phần tử giao diện người dùng có giống như công việc thiết kế ribbon không có khối lượng của xaml và các lỗi khác không? srsly chỉ cần nâng cấp. –

+0

Điều này thực sự hoạt động. Nhưng tôi chỉ 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. –

+1

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

7

FYI, nếu bạn muốn tạo một gói cài đặt trong VS2010, tiếc là nó chỉ nhắm vào NET 4. Để làm việc xung quanh điều này, bạn phải thêm NET 4.5 như là một điều kiện khởi động.

Thêm thông tin 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, Khởi chạy điều kiện).

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 mới "Khởi chạy Condition":

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 = Khuôn khổ .NET 4.5.1 được cài đặt trên Windows 8, Windows 7 SP1 hoặc Cửa sổ s Vista SP2

379893 = .NET Framework 4.5.2

trạng Launch tham khảo: http://msdn.microsoft.com/en-us/library/vstudio/xxyh2e6a(v=vs.100).aspx

3

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

1

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ệ điều hành 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 tham chiếu (như bạn làm). Khi hộp thoại hiển thị, chọn trình duyệt, sau đó điều hướng đến thư mục sau:

C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ Net Framework \ 4.5

Bạn sẽ tìm thấy "

+2

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

+0

Bạn sẽ tìm thấy các cụm không gian tên. Bạn có thể thêm cái nào bạn muốn. Ví dụ, tôi cần sử dụng một phương pháp để 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ê một cách rõ ràng vùng tên trong mã của tôi và sử dụng các phương thức mà tôi cần. –

+0

Điều này không hiệu quả đối với tôi. Nếu bạn loại bỏ tham chiếu của bạn, nói, Hệ thống, và sau đó duyệt đến .Net 4.5 System.dll và thêm rằng như là một tài liệu tham khảo, VS vẫn chọn câu trả lời 4.0 System.dll Capt Nasty trên trang này làm việc cho tôi, ví dụ: sao chép System.dll từ C: \ Program Files (x86) \ Tham chiếu Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.6 và thả nó trên đầu trang của System.dll trong C: \ Program Files (x86) \ Tham chiếu Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0. Lưu ý rằng mặc dù đây là một bản hack khó chịu và có thể có hậu quả không mong muốn. – Jinlye

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