У меня есть приложение .NET Core 2.2, которое ссылается на пакет NuGet, который имеет цели как для .NET Standard 2.0, так и для 2.1.
, то есть цели пакета NuGet
<TargetFrameworks>netstandard2.0;netstandard2.1</TargetFrameworks>
Этот NuGetПакет предназначен для разных версий пакетов DI и Logging NuGet в зависимости от целевой платформы:
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="2.2.0" Condition="'$(TargetFramework)' == 'netstandard2.0'" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.0.0" Condition="'$(TargetFramework)' == 'netstandard2.1'" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.2.0" Condition="'$(TargetFramework)' == 'netstandard2.0'" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.0.0" Condition="'$(TargetFramework)' == 'netstandard2.1'" />
Мое приложение .NET Core предназначено для .NET Core 2.2:
<TargetFramework>netcoreapp2.2</TargetFramework>
Когда яПосмотрите на зависимости NuGet для приложения .NET Core 2.2, оно использует версии 3.0.0 пакетов Logging и DI. Для меня это означает, что он пытается использовать целевую версию пакета NuGet .NET Standard 2.1.
Как я могу заставить егоиспользовать цель .NET Standard 2.0?
ОБНОВЛЕНИЕ
Это похоже на проблему с Visual Studio. После перезапуска все начало компилироваться и ошибки исчезли. Однако теперь, когда я пытаюсь использовать Entity Framework 3.0, заключенную в директивы прекомпиляции (#if NETSTANDARD2_1
), текст становится серым, как если бы директива не была определена. Если я пытаюсь скомпилировать приложение, оно выдает мне ошибки, которые ожидаются, так как я не включил usings
. Эти ошибки не отображаются перед компиляцией.