0

我想在 C# 代码中获取 .Net 版本号,所以在 .csproj 文件中,我添加了以下行:

<DefineConstants Condition=" $(TargetFrameworkVersion.Replace('v', '')) &gt;= 3.5 ">$(DefineConstants);NET35_ABOVE</DefineConstants>

然后在 C# 代码中,我可以使用“#if NET35_ABOVE”来检查当前的 .Net 版本是否高于 3.5。上面的行在 MSBuild 4.0 中工作正常,但 MSBuild 3.5 无法识别“替换”功能。如果我要以类似的方式动态检查 .Net 版本,我该如何在 MSBuild 3.5 中进行呢?

4

1 回答 1

0

您的示例似乎在 VS2010 中运行良好。

这是我尝试过的:

<PropertyGroup>
    <DefineConstants Condition=" $(TargetFrameworkVersion.Replace('v', '')) &gt;= 3.5 ">$(DefineConstants);TEST1</DefineConstants>
    <DefineConstants Condition=" $(TargetFrameworkVersion.SubString(1,3)) &gt;= 3.5 ">$(DefineConstants);TEST2</DefineConstants>
    <DefineConstants Condition=" $(TargetFrameworkVersion.SubString(1,3)) &gt;= 4.0 ">$(DefineConstants);TEST3</DefineConstants>
    <DefineConstants Condition=" $(TargetFrameworkVersion.SubString(1,3)) &gt;= 4.5 ">$(DefineConstants);TEST4</DefineConstants>
</PropertyGroup>

编辑:

但是由于您使用的是 VS2008,因此您可以使用 the 并执行类似的操作

<Choose>
  <When Condition=" $(TargetFrameworkVersion) == 'v3.5' ">
  <PropertyGroup>
    <DefineConstants >$(DefineConstants);TEST1</DefineConstants>
  </PropertyGroup>
  </When>
</Choose>
于 2013-02-11T19:26:56.907 回答