我创建了一个Directory.build.props文件,这样我就可以在里面设置的C#语言的版本。但我也有Visual Basic项目,所以我想限制设置为C#项目。
<Project>
<PropertyGroup Condition="'$(ProjectExt)'=='.csproj'">
<LangVersion>7.2</LangVersion>
</PropertyGroup>
</Project>
但我的项目未加载它/用户界面不显示的语言版本7.2。我试图应用的csproj文件中相同的条件下,也没有工作。
<PropertyGroup>
<LangVersion Condition="'$(ProjectExt)'=='.csproj'">7.2</LangVersion>
</PropertyGroup>
然而,这将工作:
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Message Text="Condition working" Importance="high" Condition="'$(ProjectExt)'=='.csproj'"/>
</Target>
生成将输出我的消息
为什么不工作我LanguageVersion条件?任何线索?
您将需要使用属性条件对可用在构建得很早。在你的情况,你应该条件对MSBuildProjectExtension
:
<PropertyGroup>
<LangVersion Condition="'$(MSBuildProjectExtension)'=='.csproj'">7.2</LangVersion>
</PropertyGroup>
见MSBuild reserved and well-known properties了一套完整可用的属性。
ProjectExt
只被定义在构建定义后期,因此不提供Directory.Build.props
,这是很早就进入项目导入。