我有一个.NET Core 2.2应用程序,该应用程序引用了同时具有.NET Standard 2.0和2.1的目标的NuGet程序包。
即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>
当我查看.NET Core 2.2应用程序的NuGet依赖项时,它引入了Logging和DI软件包的3.0.0版本。对我来说,这表明它正在尝试使用NuGet包的.NET Standard 2.1目标版本。
如何强制它使用.NET Standard 2.0目标?
这似乎是Visual Studio的问题。重新启动后,所有内容开始编译,错误消失了。但是,现在,当我尝试使用预编译指令(#if NETSTANDARD2_1
)中包装的Entity Framework 3.0时,文本将变灰,就好像未定义该指令一样。如果我尝试编译该应用程序,它将给我带来错误,因为我没有包括正确的usings
,所以这是预期的。不过,这些错误不会在编译前显示。