条件中的MSBuild 3.5属性函数
本文关键字:属性 函数 MSBuild 条件 | 更新日期: 2023-09-27 17:58:38
我想在C#代码中获得.Net版本号,所以在.csproj文件中,我添加了以下行:
<DefineConstants Condition=" $(TargetFrameworkVersion.Replace('v', '')) >= 3.5 ">$(DefineConstants);NET35_ABOVE</DefineConstants>
然后在C#代码中,我可以使用"#if NET35_ABOVE"来检查当前.Net版本是否比3.5更新。上面的行在MSBuild 4.0中正常工作,但MSBuild 3.5无法识别"Replace"函数。如果我以类似的方式动态检查.Net版本,我如何在MSBuild 3.5中进行检查?
您的示例在VS2010中似乎运行得很好。
以下是我尝试过的:
<PropertyGroup>
<DefineConstants Condition=" $(TargetFrameworkVersion.Replace('v', '')) >= 3.5 ">$(DefineConstants);TEST1</DefineConstants>
<DefineConstants Condition=" $(TargetFrameworkVersion.SubString(1,3)) >= 3.5 ">$(DefineConstants);TEST2</DefineConstants>
<DefineConstants Condition=" $(TargetFrameworkVersion.SubString(1,3)) >= 4.0 ">$(DefineConstants);TEST3</DefineConstants>
<DefineConstants Condition=" $(TargetFrameworkVersion.SubString(1,3)) >= 4.5 ">$(DefineConstants);TEST4</DefineConstants>
</PropertyGroup>
编辑:
但由于您使用的是VS2008,您可以使用并执行类似的操作
<Choose>
<When Condition=" $(TargetFrameworkVersion) == 'v3.5' ">
<PropertyGroup>
<DefineConstants >$(DefineConstants);TEST1</DefineConstants>
</PropertyGroup>
</When>
</Choose>