通过Visual Studio 2010针对.NET Framework 4.5

通过Visual Studio 2010针对.NET Framework 4.5

问题描述:

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

是否有可能从视觉对象版本4.5   Studio   2010如果是,如何?我真的很喜欢使用功能区...

+0

您必须升级到Visual Studio 2012 for .NET v4.5支持。 – Arran

+0

当我尝试在System.Threading.Tasks.Task.Run()方法中使用System.Threading.Tasks.Task.Run()方法时, VS 2010控制台应用程序,如果你的项目是以.Net framework 4.0为目标的话,这个方法不会显示在Task类上,然后你意识到如果你愿意的话VS2010不能以.Net framework 4.5为目标 – RBT

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。

+8

不完全正确 - .NET 3.0在VS版本之间发布,并且可以在VS2005中使用。 –

+1

是的,但只能通过扩展。它从一开始就没有嵌入到VS 2005中(并且因此没有完全优化)。 – thefellow3j

+5

什么是难题:迁移到vs2012 +来利用.net 4.5的精美,以牺牲部署msi安装程序的心爱的vs2010安装项目为代价...“升级”感觉更像是一个侧向... – ecoe

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

  1. 备份您的项目文件!

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

  3. 在VS2010中打开您的项目。

  4. 在您的项目中创建一个名为Compile_4_5_CSharp.targets的文本文件,其中包含以下内容。 (或者只是下载here - 确保从文件名称中删除“.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" /> 
    

    b。将默认平台更改为.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. 在配置管理器(Build - > Configuration Manager)中,确保为您的项目选择了“.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"平台的构建应该成功。当您在“任何CPU”平台下的编译,你应该得到一个编译错误:

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

这是疯狂的,即使它的工作,像丝带设计器的UI元素工作没有大量的XAML和其他错误? srsly只是升级。 –

+0

这确实有效。但是我只是使用它,所以我可以在安装.NET Framework 4.5.1后继续在VS2010上运行Moles。 –

+1

除了David Woodward的回答外,我在第一个PropertyGroup中添加了' bin \',当发生下面的错误时:OutputPath属性未设置为项目'项目名'。 – mparkuk

仅供参考,如果你想创建一个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 =安装在Windows 8,Windows 7 SP1或Window上的.NET Framework 4.5.1小号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集成,并终于得到了这个工作。从VS 2008开始,引入了一个由Visual Studio使用的名为“Referenced Assemblies”的程序集缓存。 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。

来自另一个搜索。为我工作!

“如果您的操作系统支持.NET 4.5,则可以使用Visual Studio 2010并支持它。

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

C:\ Program Files文件(x86)的\参考大会\微软\框架\ .Net框架\ 4.5

你会发现它在那里。“

+2

在句子“你会在那里找到它”,它是什么?我们选择哪个文件夹中的哪个文件?他们中的一个会让我们在VS 2010中使用.net 4.5吗? –

+0

您会找到名称空间程序集。你可以添加你想要的任何一个。例如,我需要使用一种处理ZIP文件的方法。所以我找到了DLL“System.IO.Compression.dll”,并将其添加到我的项目中。然后,我可以明确列出我的代码中的名称空间并使用我需要的方法。 –

+0

这对我不起作用。如果您删除对系统的引用,然后浏览到.Net 4.5 System.dll并将其添加为参考,则VS仍然会选择4.0 System.dll Capt Nasty在此页面上的答案适用于我,例如,将System.dll从C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.6复制到C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \框架\ .NETFramework \ V4.0。请注意,这是一个令人讨厌的黑客行为,可能会产生意想不到的后果。 – Jinlye