通过 Visual Studio 2010瞄准.NET Framework 4.5

今天我安装了。我机器上的 NET Framework 4.5希望能够从 Visual Studio 2010中使用它,因为它只是一个小更新,不会给 Visual Studio 2010带来问题。不幸的是,我没有,甚至手动删除某些4.0和添加相应的4.5程序集导致原来的4.0程序集仍然在项目中引用。

是否有可能从 Visual Studio 2010的版本4.5,如果是,如何? 我真的很想使用丝带..。

221115 次浏览

VisualStudio2010之前的每个 VisualStudio 版本都绑定到特定的。NET 架构。(VS2008是。NET 3.5,VS2005是。NET 2.0,VS2003是。NET 1.1) Visual Studio 2010及以后版本允许针对以前的框架版本,但不能用于未来的版本。必须使用 VisualStudio2012才能使用。NET 4.5.

我能想到的有用的场景非常有限,但我们假设您无法获得资金购买 VS2012或类似的东西。如果是这种情况,你有 Windows 7 + 和 VS 2010,你可能能够使用下面的黑客技术,我放在一起似乎工作(但我还没有完全部署使用这种方法的应用程序)。

  1. 备份你的项目文件! ! !

  2. 下载并安装包含.NET 4.5 SDK 的 Windows 8 SDK

  3. 在 VS2010中打开项目。

  4. 在项目中创建一个名为 Compile_4_5_CSharp.targets的文本文件,其内容如下。(或者只是下载它 给你-确保删除“。文件名中的“ txt”扩展名) :

    <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. Unload your project (right click -> unload).

  6. Edit the project file (right click -> Edit *.csproj).

  7. Make the following changes in the project file:

    a. Replace the default Microsoft.CSharp.targets with the target file created in step 4

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

    将默认平台更改为 .NET 4.5

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

    添加 AnyCPU平台,以允许针对项目属性中指定的其他框架。这应该在文件中的第一个 <ItemGroup>标记之前添加

    <PropertyGroup Condition="'$(Platform)' == 'AnyCPU'">
    <PlatformTarget>AnyCPU</PlatformTarget>
    </PropertyGroup>
    
    
    .
    .
    .
    <ItemGroup>
    .
    .
    .
    
  8. Save your changes and close the *.csproj file.

  9. Reload your project (right click -> Reload Project).

  10. In the configuration manager (Build -> Configuration Manager) make sure the ".NET 4.5" platform is selected for your project.

  11. Still in the configuration manager, create a new solution platform for ".NET 4.5" (you can base it off "Any CPU") and make sure ".NET 4.5" is selected for the solution.

  12. Build your project and check for errors.

  13. Assuming the build completed you can verify that you are indeed targeting 4.5 by adding a reference to a 4.5 specific class to your source code:

    using System;
    using System.Text;
    
    
    namespace testing
    {
    using net45check = System.Reflection.ReflectionContext;
    }
    
  14. When you compile using the ".NET 4.5" platform the build should succeed. When you compile under the "Any CPU" platform you should get a compiler error:

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

仅供参考,如果你想在 VS2010中创建一个安装程序包,不幸的是它只针对。NET 4.为了解决这个问题,您必须添加 NET 4.5作为启动条件。

在安装程序的启动条件(右击,查看,启动条件)中添加以下内容。

在「搜寻目标机」中,右击并选择「添加注册表搜寻」。

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

新增「发射条件」 :

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.

地点:

378389 = . NET Framework 4.5

378675 = . NET Framework 4.5.1,安装在 Windows 8.1中

378758 = . NET Framework 4.5.1安装在 Windows 8、 Windows 7 SP1或 Windows Vista SP2上

379893 = . NET Framework 4.5.2

发射条件参考: http://msdn.microsoft.com/en-us/library/vstudio/xxyh2e6a(v=vs.100).aspx

我一直在努力与 VS2010/DNFW 4.5集成,并最终得到这个工作。从 VS2008开始,VisualStudio 引入了称为“引用程序集”的程序集缓存。VS2010的这个文件缓存位于参考程序集 MicrosoftFramework 中。NetFramework v4.0.VisualStudio 从此位置而不是从框架安装目录加载框架程序集。当微软说 VS 2010不支持 DNFW 4.5时,他们 刻薄的意思是,当安装 DNFW 4.5时,这个目录不会更新。一旦您用更新后的 DNFW 4.5文件替换了这个位置的文件,您将发现 VS 2010将很高兴地使用 DNFW 4.5工作。

从另一个搜索。为我工作!

”如果你的操作系统支持.NET 4.5,你可以使用 Visual Studio 2010,它确实支持它。

右键单击您的解决方案以添加引用(正如您所做的那样)。显示对话框时,选择“浏览”,然后导航到以下文件夹:

C: Program Files (x86)参考程序集 Microsoft Framework.Net Framework 4.5

你会在那里找到它。”