C# 专门针对较旧版本的单一.NET标准API/命名空间(实体框架核心)
我正在将应用程序中的.NET Core升级到2.1。借助最新的SDK(2.1.300),.NET标准有两个版本的Entity Framework Core。因此,当我右键单击下面的行并单击“转到定义”时,我会在下面的屏幕截图中获得选项C# 专门针对较旧版本的单一.NET标准API/命名空间(实体框架核心),c#,asp.net-core,.net-core,entity-framework-core,.net-standard,C#,Asp.net Core,.net Core,Entity Framework Core,.net Standard,我正在将应用程序中的.NET Core升级到2.1。借助最新的SDK(2.1.300),.NET标准有两个版本的Entity Framework Core。因此,当我右键单击下面的行并单击“转到定义”时,我会在下面的屏幕截图中获得选项 using Microsoft.EntityFrameworkCore; 请注意实体框架核心的2.1.0.0和2.0.3.0。我假设,默认情况下,我的目标是可用的最高版本(2.1.0.0)。我想特别针对2.0.3.0,因为我相信我的类库的EF数据提供程序支持2
using Microsoft.EntityFrameworkCore;
请注意实体框架核心的2.1.0.0和2.0.3.0。我假设,默认情况下,我的目标是可用的最高版本(2.1.0.0)。我想特别针对2.0.3.0,因为我相信我的类库的EF数据提供程序支持2.1.0.0。但是,我想继续使用最新版本的SDK。有没有办法通过指定要使用的Microsoft.EntityFrameworkCore
的版本号来实现这一点
如果这很重要的话,我已经完成了工作。以下是我的类库的.csproj的相关部分供参考:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.3" />
</ItemGroup>
</Project>
netstandard2.0
你似乎把一些事情搞混了:
- .NET核心SDK主要决定您可以使用的工具。除非您有充分的理由,否则您应该始终运行最新的SDK。因此,您应该使用SDK的当前版本
。SDK版本对您将使用的运行时没有直接影响2.1.300
- 如果要在.NET Core上的2.1版上运行ASP.NET Core应用程序,则必须使用
目标框架netcoreapp2.1
- 显然,您必须在2.1版中使用
软件包Microsoft.AspNetCore.
- 如果您想在2.0.x版本中使用EntityFrameworkCore,那么需要显式引用它。请注意,在这种情况下,您不能使用共享框架引用Microsoft.AspNetCore.App
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.3" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.0.1" />
</ItemGroup>
</Project>
请注意,实体框架核心未包含在.NET标准中,它只是针对它,这意味着它构建在标准之上;就像你的图书馆项目一样
如果要从ASP.NET Core 2.1应用程序中使用库项目,则上述限制仍然适用:您不能使用Microsoft.AspNetCore.App
共享框架引用,因为这将导致版本冲突
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.3" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.0.1" />
</ItemGroup>
</Project>