170

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

是否可以从 Visual Studio 2010 定位 4.5 版,如果可以,如何?我真的很想用丝带...

4

5 回答 5

196

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。

于 2012-09-12T14:33:47.907 回答
69

我能想到的场景非常有限,但我们假设您无法获得资金来购买 VS2012 或类似的东西。如果是这种情况,并且您拥有 Windows 7+ 和 VS 2010,您也许可以使用我整理的以下 hack,这似乎可行(但我尚未使用此方法完全部署应用程序)。

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

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

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

    一种。将默认值替换为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>
    .
    .
    .
    
  8. 保存更改并关闭*.csproj文件。

  9. 重新加载您的项目(右键单击 -> 重新加载项目)。

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

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

  12. 构建您的项目并检查错误。

  13. 假设构建完成,您可以通过在源代码中添加对 4.5 特定类的引用来验证您确实以 4.5 为目标:

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

    Error 6: The type or namespace name 'ReflectionContext' does not exist in
    the namespace 'System.Reflection' (are you missing an assembly reference?)
    
于 2012-11-05T20:43:10.970 回答
8

仅供参考,如果您想在 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 框架 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 框架 4.5.2

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

于 2014-08-29T10:00:03.243 回答
3

我一直在为 VS2010/DNFW 4.5 集成而苦苦挣扎,终于让它工作了。从 VS 2008 开始,引入了 Visual Studio 使用的程序集缓存,称为“引用程序集”。VS 2010 的此文件缓存位于 \Reference Assemblies\Microsoft\Framework.NetFramework\v4.0。Visual Studio 从该位置而不是从框架安装目录加载框架程序集。当微软说 VS 2010 不支持 DNFW 4.5 时,他们的意思是在安装 DNFW 4.5 时该目录不会得到更新。一旦你用更新的 DNFW 4.5 文件替换了这个位置的文件,你会发现 VS 2010 可以很高兴地与 DNFW 4.5 一起工作。

于 2015-12-01T20:54:38.783 回答
0

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

“你可以使用 Visual Studio 2010,它确实支持它,前提是你的操作系统支持 .NET 4.5。

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

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

你会在那里找到的。”

于 2016-06-09T11:18:41.787 回答