我希望在 Visual Studio 2010解决方案中同时针对. NET 3.5和. NET 4.0.
我知道我可以以在项目文件中设置 <TargetFrameworkVersion/>
,然而这要求我在构建解决方案之前编辑每个项目文件。Scott Dorman提供了一个宏,它在博客文章 Visual Studio 2010和目标框架版本on上做了。
我正在寻找一个全局解决方案,在那里我不必更改每个项目的设置。是否可以在解决方案级别更改中心设置以实现相同的目标?
我希望在 Visual Studio 2010解决方案中同时针对. NET 3.5和. NET 4.0.
我知道我可以以在项目文件中设置 <TargetFrameworkVersion/>
,然而这要求我在构建解决方案之前编辑每个项目文件。Scott Dorman提供了一个宏,它在博客文章 Visual Studio 2010和目标框架版本on上做了。
我正在寻找一个全局解决方案,在那里我不必更改每个项目的设置。是否可以在解决方案级别更改中心设置以实现相同的目标?
,Skeet写道,在解决方案级别上没有明显的方法来定义目标框架。但是,可以通过向解决方案添加特定的插件配置( ) 来完成这一任务,然后手动编辑每个配置的目标文件,而不是整个项目的全局目标。
以下是step-by-step指南:
Debug v3.5
) 。<PropertyGroup>
元素,。</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