条件对“的PropertyGroup”在Directory.build.props不工作

问题描述 投票:0回答:1

我创建了一个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条件?任何线索?

msbuild
1个回答
1
投票

您将需要使用属性条件对可用在构建得很早。在你的情况,你应该条件对MSBuildProjectExtension

<PropertyGroup>
  <LangVersion Condition="'$(MSBuildProjectExtension)'=='.csproj'">7.2</LangVersion>
</PropertyGroup>

MSBuild reserved and well-known properties了一套完整可用的属性。

ProjectExt只被定义在构建定义后期,因此不提供Directory.Build.props,这是很早就进入项目导入。

© www.soinside.com 2019 - 2024. All rights reserved.