通过Visual Studio 2010定位.NET Framework 4.5

4ktjp1zp  于 2023-10-23  发布在  .NET
关注(0)|答案(6)|浏览(186)

今天我在我的机器上安装了.NET Framework 4.5,希望能够在Visual Studio 2010中使用它,因为它只是一个小更新,不应该对Visual Studio 2010造成问题。不幸的是,我没有,即使手动删除某些4.0并添加相应的4.5程序集,也会导致项目中仍然引用原始4.0程序集。
是否可以从Visual Studio 2010中定位4.5版本,如果可以,如何定位?我真的很想用丝带...

50pmv0ei

50pmv0ei1#

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。

rqqzpn5f

rqqzpn5f2#

有相当有限的情况下,我可以想到这将是有用的,但让我们假设你不能得到资金购买VS 2012或类似的东西。如果是这样的话,你有Windows 7+和VS 2010,你可以使用下面的黑客我放在一起,似乎工作(但我还没有完全部署一个应用程序使用这种方法)。
1.备份您的项目文件!!!
1.下载并安装包含.NET 4.5 SDK的Windows 8 SDK
1.在VS2010中打开项目。
1.在项目中创建一个名为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>

1.卸载你的项目(右键单击-> unload)。
1.编辑项目文件(右键单击-> Edit *.csproj)。
1.在项目文件中进行以下更改:
a.将默认的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>
.
.
.

1.保存更改并关闭*.csproj文件。
1.添加您的项目(右键单击->添加项目)。
1.在配置管理器(Build -> Configuration Manager)中,确保为项目选择了“.NET 4.5”平台。
1.仍然在配置管理器中,为“.NET 4.5”创建一个新的解决方案平台(您可以将其基于“任何CPU”),并确保为解决方案选择“.NET 4.5”。
1.构建您的项目并检查错误。
1.假设构建完成,你可以通过在源代码中添加一个对4.5特定类的引用来验证你确实是针对4.5的:

using System;
using System.Text;

namespace testing
{
    using net45check = System.Reflection.ReflectionContext;
}

1.当您使用“.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?)
ajsxfq5m

ajsxfq5m3#

仅供参考,如果你想在VS2010中创建一个JavaScript包,不幸的是它只针对.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 Framework 4.5
378675 =随Windows 8.1一起安装的.NET Framework 4.5.1
378758 = .NET Framework 4.5.1安装在Windows 8、Windows 7 SP1或Windows Vista SP2上
379893 = .NET Framework 4.5.2
启动条件参考:http://msdn.microsoft.com/en-us/library/vstudio/xxyh2e6a(v=vs.100).aspx

7xllpg7q

7xllpg7q4#

我一直在努力与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一起工作。

vulvrdjw

vulvrdjw5#

从另一个搜索。对我有用!
“你可以使用Visual Studio 2010,它确实支持它,只要你的操作系统支持.NET 4.5。
右键单击您的解决方案以添加引用(就像您所做的那样)。当对话框显示时,选择浏览,然后导航到以下文件夹:
C:\Program Files(x86)\Reference Assemblies\Microsoft\Framework.Net Framework\4.5**
你会在那里找到的。”

polkgigr

polkgigr6#

作为大卫伍德沃德的答案的类似替代,你可以
1.将一个MyProject.csproj.user文件添加到项目文件夹中,该文件包含以下内容

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <!-- choose the fx target framework sub version, here 4.5.2 -->
        <FrameworkVersion4FX>5</FrameworkVersion4FX>
        <FrameworkVersion4FXX Condition="$(FrameworkVersion4FX) != ''">2</FrameworkVersion4FXX>
        <TargetFrameworkVersionNET4FX>v4</TargetFrameworkVersionNET4FX>
        <TargetFrameworkVersionNET4FX Condition="$(FrameworkVersion4FX) != '' ">$(TargetFrameworkVersionNET4FX).$(FrameworkVersion4FX)</TargetFrameworkVersionNET4FX>
        <TargetFrameworkVersionNET4FX Condition="$(FrameworkVersion4FXX) != '' ">$(TargetFrameworkVersionNET4FX).$(FrameworkVersion4FXX)</TargetFrameworkVersionNET4FX>
    </PropertyGroup>

    <PropertyGroup Condition="'$(Configuration)' == 'DebugNET4FX'">
        <TargetFrameworkVersion>$(TargetFrameworkVersionNET4FX)</TargetFrameworkVersion>
    </PropertyGroup>

    <PropertyGroup Condition="'$(Configuration)' == 'ReleaseNET4FX'">
        <TargetFrameworkVersion>$(TargetFrameworkVersionNET4FX)</TargetFrameworkVersion>
    </PropertyGroup>
</Project>

1.重新加载项目
1.打开配置管理器
1.现在,项目的配置列表中会显示ReleaseNET4FX和ReleaseNET4FX配置项
1.通过单击““删除这两个新配置<Edit...>,选择并“删除”它们
1.单击“<new...>“并在“New Project Configuration”窗口中重新添加这两个配置,方法是键入正确的名称,选择相应的“Copy settings from”并选中“Create new solution configurations”框
1.确保所有配置|解决方案和项目的平台彼此一致,并且选中“Build”框
1.启动项目
您现在可以在解决方案中选择配置|你想要的平台组合。

相关问题