今天,我在计算机上安装了.NET Framework 4.5,希望能够从Visual Studio 2010中使用它,因为它只是一个较小的更新,不会对Visual Studio 2010造成问题。遗憾的是,我什至没有,甚至手动删除了某些4.0并添加相应的4.5程序集,导致原始4.0程序集仍在项目中被引用。
是否可以将Visual Studio 2010中的版本4.5定位为目标,如果是,则如何?我真的很想用丝带...
今天,我在计算机上安装了.NET Framework 4.5,希望能够从Visual Studio 2010中使用它,因为它只是一个较小的更新,不会对Visual Studio 2010造成问题。遗憾的是,我什至没有,甚至手动删除了某些4.0并添加相应的4.5程序集,导致原始4.0程序集仍在项目中被引用。
是否可以将Visual Studio 2010中的版本4.5定位为目标,如果是,则如何?我真的很想用丝带...
Answers:
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,则可以使用我整理的以下技巧似乎可以正常工作(但我尚未使用此方法完全部署应用程序)。
备份您的项目文件!!!
下载并安装Windows 8 SDK,其中包括.NET 4.5 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" />
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>
.
.
.
保存您的更改并关闭*.csproj
文件。
重新加载项目(右键单击->重新加载项目)。
在配置管理器(构建->配置管理器)中,确保为项目选择了“ .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”平台进行编译时,构建应该成功。在“ Any CPU”平台上进行编译时,应出现编译器错误:
Error 6: The type or namespace name 'ReflectionContext' does not exist in
the namespace 'System.Reflection' (are you missing an assembly reference?)
<OutputPath>bin\</OutputPath>
在出现以下错误时添加到第一个PropertyGroup:未为项目“项目名称”设置OutputPath属性。
仅供参考,如果要在VS2010中创建安装程序包,很遗憾,它仅针对.NET4。要解决此问题,您必须添加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 = 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/zh-cn/library/vstudio/xxyh2e6a(v=vs.100).aspx
我一直在努力与VS2010 / DNFW 4.5集成,并最终使它工作。从VS 2008开始,引入了程序集的缓存,Visual Studio将该程序集称为“参考程序集”。VS 2010的此文件缓存位于\ Reference Assemblies \ Microsoft \ Framework.NetFramework \ v4.0。Visual Studio从此位置而不是从框架安装目录加载框架程序集。当Microsoft说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)\ Reference Assemblys \ Microsoft \ Framework \ .Net Framework \ 4.5
您将在这里找到它。”