我已经创建了Directory.build.props文件,因此可以在其中设置C#语言版本。 但是我也有Visual Basic项目,所以我想将设置限制为C#项目。
<Project>
<PropertyGroup Condition="'$(ProjectExt)'=='.csproj'">
<LangVersion>7.2</LangVersion>
</PropertyGroup>
</Project>
但是我的项目没有加载它/ UI没有显示语言版本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?有线索吗?
答案 0 :(得分:1)
您将需要使用一个属性来限制在构建的早期就可用的属性。在您的情况下,您应该以{{1}}为条件:
MSBuildProjectExtension
有关可用属性的完整集合,请参见MSBuild reserved and well-known properties。
<PropertyGroup>
<LangVersion Condition="'$(MSBuildProjectExtension)'=='.csproj'">7.2</LangVersion>
</PropertyGroup>
仅在构建定义的后期定义,因此在ProjectExt
中不可用,后者很早就导入到项目中。