Directory.Build.props в папке root с проектами c# и f # вызывает проблему - PullRequest
1 голос
/ 07 апреля 2020

При создании нового решения Visual Studio я хотел бы использовать Directory.Build.props для управления номером версии c# для всех c# проектов без необходимости их индивидуальной настройки.

Однако, имея Сочетание папок c# и f # приводит к ошибке компиляции.

Severity    Code    Description Project File    Line    Suppression State
Error   FS0246  Unrecognized value '8.0' for --langversion use --langversion:? for complete list    FSharpLib   C:\source\solution\FSharpLib\FSC    1   Active

Это самое маленькое решение для демонстрации проблемы. В реальном решении очевидно больше проектов.

Структура папок

\ solution
\ solution \ Directory.Build.props
\ solution \ CSharpLib
\ solution \ FSharpLib

Directory.Build.props

<Project>
 <PropertyGroup>
   <LangVersion>8.0</LangVersion>
 </PropertyGroup>
</Project>

Файлы проекта (для полноты)

CSharpLib
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

</Project>

FSharpLib
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="Library.fs" />
  </ItemGroup>

</Project>

Возможно ли иметь c sharp и f sharp проектов бок о бок с Directory.Build.props в папке root для применения только к c sharp проектам?

Перемещение сборочных реквизитов в папку только с проектами csharp внизу будет работать, но я не Не хочу структурировать вещи таким образом - я хочу, чтобы связанные модули были рядом друг с другом.

1 Ответ

3 голосов
/ 07 апреля 2020

Вы можете добавить Condition="'$(ProjectExt)'=='.csproj'" к вашему Directory.build.props PropertyGroup, чтобы применить его только к C# проектам.

...