Свойство csproj LangVersion переопределяет любой импортированный проект - PullRequest
0 голосов
/ 31 августа 2018

У меня есть csproj с <LangVersion>default</LangVersion>, который в настоящее время по умолчанию c # 7.0.

Если я изменю его вручную на 7.3, он правильно скомпилирует наш код, который использует определенные функции от 7.1 и выше.

Конечно, я мог бы изменить это на каждом csproj, но так как у нас много, я ищу другие решения.

Я добавил Directory.Build.props в корень моего репозитория и импортирую его в csproj. Но настройка <LangVersion> в csproj имеет приоритет над настройкой <LangVersion> в моем файле props ... независимо от того, где я импортирую ее в csproj.

Я бы предпочел не просить всех удалить свойство <LangVersion> из их csproj и всех будущих csproj, если это может быть унаследовано от некоторых основных объектов ... но это не так. Что мне здесь не хватает?

1 Ответ

0 голосов
/ 31 августа 2018

Файл Directory.Build.props импортируется автоматически (не требуется <Import>) в начале (!) Файла проекта.

Таким образом, каждый контент в файле проекта добавляется после содержимого этого файла и, таким образом, переопределяет значение, определенное ранее. (если только csproj не содержит условия типа <LangVersion Condition="'$(LangVersion)' != ''">…).

Чтобы переопределить любое значение, поступающее из файла csproj, вы можете использовать файл Directory.Build.targets, который автоматически импортируется после (!) Содержимого проекта, что позволяет переопределять значения, установленные в файле проекта.

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