通过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版本,如果是,如何实现? 我真的很喜欢用丝带......


Visual Studio 2010之前的每个Visual Studio版本都绑定到特定的.NET框架。 (VS2008是.NET 3.5,VS2005是.NET 2.0,VS2003是.NET1.1)Visual Studio 2010及更高版本允许定位以前的框架版本,但不能用于将来的版本。 您必须使用Visual Studio 2012才能使用.NET 4.5。


我可以想到这种情况会非常有用,但是我们可以假设你无法获得购买VS2012的资金或其他方面的影响。 如果是这样的话,你有Windows 7+和VS 2010,你可以使用下面这些似乎可行的hack(但我还没有完全使用这种方法部署应用程序)。

  • 备份你的项目文件!

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

  • 在VS2010中打开你的项目。

  • 在名为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>
    
  • 卸载您的项目(右键单击 - >卸载)。

  • 编辑项目文件(右键单击 - >编辑* .csproj)。

  • 在项目文件中进行以下更改:

    一个。 将默认的Microsoft.CSharp.targets替换为步骤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>
    

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

    <PropertyGroup Condition="'$(Platform)' == 'AnyCPU'">
        <PlatformTarget>AnyCPU</PlatformTarget>
    </PropertyGroup>
    
    .
    .
    .
    <ItemGroup>
    .
    .
    .
    
  • 保存您的更改并关闭*.csproj文件。

  • 重新加载你的项目(右键 - >重新加载项目)。

  • 在配置管理器(Build - > Configuration Manager)中,确保为您的项目选择了“.NET 4.5”平台。

  • 仍然在配置管理器中,为“.NET 4.5”创建一个新的解决方案平台(可以将其基于“任何CPU”),并确保为该解决方案选择“.NET 4.5”。

  • 建立你的项目并检查错误。

  • 假设构建完成,您可以通过在源代码中添加对4.5特定类的引用来确认您确实定位了4.5:

    using System;
    using System.Text;
    
    namespace testing
    {
        using net45check = System.Reflection.ReflectionContext;
    }
    
  • 当您使用“.NET 4.5”平台编译时,构建应该成功。 当你在“任何CPU”平台下编译时,你应该得到一个编译器错误:

    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: SoftwareMicrosoftNET Framework SetupNDPv4Full
    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 =与Windows 8.1一起安装的.NET Framework 4.5.1

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

    379893 = .NET Framework 4.5.2

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

    链接地址: http://www.djcxy.com/p/44185.html

    上一篇: Targeting .NET Framework 4.5 via Visual Studio 2010

    下一篇: Setup boost and use with Visual Studio 2010 Express