我希望在 Visual Studio 2010解决方案中同时针对. NET 3.5和. NET 4.0.

我希望在 Visual Studio 2010解决方案中同时针对. NET 3.5和. NET 4.0.

我知道我可以以在项目文件中设置 <TargetFrameworkVersion/>,然而这要求我在构建解决方案之前编辑每个项目文件。Scott Dorman提供了一个宏,它在博客文章 Visual Studio 2010和目标框架版本on上做了。

我正在寻找一个全局解决方案,在那里我不必更改每个项目的设置。是否可以在解决方案级别更改中心设置以实现相同的目标?

时间:2个月前原作者:Pierre Arnaud 共0个回答

92 0

,Skeet写道,在解决方案级别上没有明显的方法来定义目标框架。但是,可以通过向解决方案添加特定的插件配置( ) 来完成这一任务,然后手动编辑每个配置的目标文件,而不是整个项目的全局目标。

以下是step-by-step指南:

  • 选择 Build Build 配置管理 。
  • 活动解决方案配置下拉列表中,选择并输入有意义的NAME ( 比如 。根据现有的任何设置,Debug v3.5 ) 。
  • 对于每个项目文件,在编辑器( 在 Visual Studio 中可以这样做,但是必须首先在解决方案浏览器中右键单击它并选择卸载项目,然后双击 xyz.csproj ) 中打开它。
  • 查找你刚才创建的配置的<PropertyGroup> 元素,。
  • 在XML中添加,例如关闭 </PlatformTarget> 元素,你需要的<TargetFrameworkVersion> 和 <TargetFrameworkProfile> 。
  • 保存文件。
  • 在解决方案资源管理器中,使用命令重新加载项目使项目再次可用。

下面是一个示例:

复制代码
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug v3.5|AnyCPU'">
 <DebugSymbols>true</DebugSymbols>
 <OutputPath>binDebug 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.

这是我的Fragment:

复制代码
#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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值