Targeting .NET Framework 4.5 via Visual Studio 2010
今天,我在我的计算机上安装了.NET Framework 4.5,希望能够从Visual Studio 2010中使用它,因为它只是一个小更新,不会对Visual Studio 2010造成问题。不幸的是,即使手动删除某些4.0并添加相应的4.5程序集,也会导致原始的4.0程序集仍在项目中被引用。
是否可以将Visual Studio 2010的4.5版作为目标,如果可以,如何实现?我真的很想用这些丝带…
Visual Studio 2010之前的每个版本都绑定到特定的.NET框架。(vs2008是.NET 3.5,vs2005是.NET 2.0,vs2003是.NET 1.1)Visual Studio 2010及更高版本允许针对以前的框架版本,但不能用于将来的版本。必须使用Visual Studio 2012才能使用.NET 4.5。
我能想到的情况非常有限,但假设您无法获得资金购买VS2012或其他类似产品。如果是这样的话,并且您有Windows7+和Vs2010,那么您可能可以使用我放在一起的以下黑客程序,这些程序似乎可以工作(但我还没有完全部署使用此方法的应用程序)。
备份项目文件!!!!
下载并安装包含.NET 4.5 SDK的Windows 8 SDK。
在VS2010中打开项目。
在项目中创建一个名为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <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)。
在项目文件中进行以下更改:
a.用步骤4中创建的目标文件替换默认的
1 2 3 4 5 | <!-- Old Import Entry --> <!-- <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> --> <!-- New Import Entry --> <Import Project="Compile_4_5_CSharp.targets" /> |
b.将默认平台改为
1 2 3 4 5 | <!-- Old default platform entry --> <!-- <Platform Condition=" '$(Platform)' == ''">AnyCPU</Platform> --> <!-- New default platform entry --> <Platform Condition=" '$(Platform)' == ''">.NET 4.5</Platform> |
c.添加
1 2 3 4 5 6 7 8 9 10 11 | <PropertyGroup Condition="'$(Platform)' == 'AnyCPU'"> <PlatformTarget>AnyCPU</PlatformTarget> </PropertyGroup> . . . <ItemGroup> . . . |
保存更改并关闭
重新加载项目(右键单击->重新加载项目)。
在配置管理器(build->configuration manager)中,确保为项目选择了".net 4.5"平台。
仍在配置管理器中,为".NET 4.5"(您可以基于"任意CPU")创建新的解决方案平台,并确保为解决方案选择了".NET 4.5"。
构建项目并检查错误。
假设构建完成,您可以通过在源代码中添加对4.5特定类的引用来验证您确实是以4.5为目标的:
1 2 3 4 5 6 7 | using System; using System.Text; namespace testing { using net45check = System.Reflection.ReflectionContext; } |
使用.NET 4.5平台编译时,构建应该成功。当您在"any cpu"平台下编译时,应该会得到一个编译器错误:
1 2 | 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作为启动条件。
将以下内容添加到安装程序的启动条件中(右键单击、查看、启动条件)。
在"搜索目标机器"中,右键单击并选择"添加注册表搜索"。
1 2 3 4 5 6 | Property: REGISTRYVALUE1 RegKey: Software\Microsoft ET Framework Setup DP\v4\Full Root: vsdrrHKLM Value: Release |
添加新的"启动条件":
1 2 3 | 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
我一直在努力与VS2010/DNFW 4.5集成,并最终得到了这个工作。从VS 2008开始,Visual Studio引入了程序集缓存,称为"引用的程序集"。此vs 2010文件缓存位于
eference assemblesmicrosoftframework.netframeworkv4.0。Visual Studio从该位置而不是从框架安装目录加载框架程序集。当微软说vs 2010不支持dnfw 4.5时,他们的意思是在安装dnfw4.5时,这个目录不会得到更新。一旦您用更新的dnfw 4.5文件替换了这个位置的文件,您会发现vs 2010将很高兴地与dnfw4.5一起工作。
从另一个搜索。为我工作!
"如果您的操作系统支持.NET 4.5,您可以使用Visual Studio 2010,它确实支持它。
右键单击解决方案以添加引用(和您一样)。当对话框显示时,选择"浏览",然后导航到以下文件夹:
C:程序文件(x86)
eference assemblesmicrosoftframework.net framework4.5
你会在那里找到的。"