gpt4 book ai didi

.net - 在Visual Studio 2010解决方案级别定位特定版本的.NET框架

转载 作者:行者123 更新时间:2023-12-04 04:56:03 25 4
gpt4 key购买 nike

我想在我的Visual Studio 2010解决方案中同时针对.NET 3.5和.NET 4.0。

我知道我可以在项目文件中设置<TargetFrameworkVersion />,但是这要求我在为特定的.NET Framework版本构建解决方案之前编辑每个项目文件。斯科特·多曼(Scott Dorman)在他的博客文章Visual Studio 2010 and Target Framework Version上提供了一个可以解决问题的宏。

我正在寻找一种全局解决方案,无需在每个项目中都更改设置。是否可以在解决方案级别更改中心设置以实现同一目的?

最佳答案

正如Jon Skeet所写,没有明显的方法可以在解决方案级别定义目标框架。但是,可以通过在解决方案中添加特定的配置,然后手动编辑*.csproj文件来指定每种配置的目标,而不是整个项目的全局目标来完成。

以下是分步指南:

  • 选择“构建”-“配置管理器”。
  • 在“事件解决方案配置”下拉列表中,根据您已有的任何现有设置选择并输入一个有意义的名称(例如Debug v3.5)。
  • 对于每个项目文件,在编辑器中打开它(可以在Visual Studio中执行此操作,但是必须首先在解决方案资源管理器中右键单击它,然后选择“卸载项目”,然后选择“编辑xyz.csproj”)。
  • 查找与您刚创建的配置相匹配的<PropertyGroup>元素(例如Debug v3.5|AnyCPU)。
  • 添加XML,例如,在结束</PlatformTarget>元素,所需的<TargetFrameworkVersion><TargetFrameworkProfile>之后。
  • 保存文件。
  • 在解决方案资源管理器中,使用命令“重新加载项目”使该项目再次可用。

  • 这是一个示例:
    <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug v3.5|AnyCPU'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\Debug v3.5\</OutputPath>
    <DefineConstants>DEBUG;TRACE;DOTNET35</DefineConstants>
    ...
    <DebugType>full</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
    ...
    </PropertyGroup>

    请注意,我还定义了符号 DOTNET35,这使我可以在源代码中编写依赖于框架的 #if语句。例如,我有一些依赖于 System.Tuple的代码,通过添加该类的简约版本,我可以将.NET 4.0应用程序反向移植到.NET 3.5。

    这是我的片段:
    #if DOTNET35
    namespace System
    {
    public class Tuple<T1, T2>
    {
    public Tuple(T1 item1, T2 item2)
    {
    this.item1 = item1;
    this.item2 = item2;
    }

    public T1 Item1
    {
    get
    {
    return this.item1;
    }
    }

    public T2 Item2
    {
    get
    {
    return this.item2;
    }
    }

    private readonly T1 item1;
    private readonly T2 item2;
    }
    }
    #endif

    关于.net - 在Visual Studio 2010解决方案级别定位特定版本的.NET框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4426524/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com