我正在尝试遵循.NET Core 2.1 DAL类库中的Entity Framework Core video。在DbContext.OnCofiguring中放置以下代码:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
optionsBuilder.UseSqlServer("Server*.");
}
问题是UseSQLServer丢失了?建议从this添加 Microsoft.EntityFrameworkCore.SqlServer nuget。这样做时,我遇到一些我不知道如何解决的版本冲突:
严重性代码描述项目文件行抑制状态 错误CS1061'DbContextOptionsBuilder'不包含定义 用于“ UseSqlServer”,并且没有可访问的扩展方法“ UseSqlServer” 接受类型为'DbContextOptionsBuilder'的第一个参数可能是 找到(您是否缺少using指令或程序集 参考?)DataAccessLayer
-
严重性代码描述项目文件行抑制状态 错误程序包还原失败。回滚包更改 “ DataAccessLayer”。
-
严重性代码描述项目文件行抑制状态 错误NU1605检测到软件包降级: 从2.2.0到2.1.1的Microsoft.Extensions.Configuration参考 直接从项目中打包以选择其他版本。
DataAccessLayer-> Microsoft.EntityFrameworkCore.SqlServer 2.2.3-> Microsoft.EntityFrameworkCore.Relational 2.2.3-> Microsoft.EntityFrameworkCore 2.2.3-> Microsoft.Extensions.Logging 2.2.0-> Microsoft.Extensions.Configuration.Binder 2.2.0-> Microsoft.Extensions.Configuration(> = 2.2.0)DataAccessLayer-> Microsoft.Extensions.Configuration(> = 2.1.1)DataAccessLayer
-
严重性代码描述项目文件行抑制状态 错误NU1605检测到软件包降级: 从2.2.0到2.1.1的Microsoft.Extensions.DependencyInjection 直接从项目中引用包以选择其他包 版。 DataAccessLayer-> Microsoft.EntityFrameworkCore.SqlServer 2.2.3-> Microsoft.EntityFrameworkCore.Relational 2.2.3-> Microsoft.EntityFrameworkCore 2.2.3-> Microsoft.Extensions.DependencyInjection(> = 2.2.0)DataAccessLayer -> Microsoft.Extensions.DependencyInjection(> = 2.1.1)DataAccessLayer
-
我怀疑该项目正在使用几个nuget包,其中一些引用了另一个nuget或dll的不同版本。
建议直接引用程序包吗?这是否意味着我应该手动引用dll?我从哪里获得dll?
答案 0 :(得分:0)
NU1605的默认严重性是警告,由于您将其视为错误,因此这意味着您的项目已选择将错误视为警告。
软件包降级的原因可能是由于NuGet's nearest-wins rule。避免降级的唯一方法是将PackageReference添加到已降级的程序包中,这样,您选择的版本始终是最接近的版本,而瞬态依赖项则永远不会降级。
否则,您可以通过关闭“将所有警告视为错误”来停止射击自己的脚,并仅列出要视为错误的特定警告。或者,将NU1605添加到禁止显示的警告列表中(csproj中的<NoWarn>
)。