Условие для "PropertyGroup" в Directory.build.props не работает - PullRequest
0 голосов
/ 05 февраля 2019

Я создал файл 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?Любые подсказки?

1 Ответ

0 голосов
/ 05 февраля 2019

Вам нужно будет использовать свойство для условия, которое доступно в самом начале сборки.В вашем случае вы должны указать MSBuildProjectExtension:

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

См. Зарезервированные и известные свойства MSBuild для полного набора доступных свойств.

ProjectExt определяется только поздно в определении сборки и поэтому недоступно в Directory.Build.props, который очень рано импортируется в проект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...