【问题标题】:UseSqlServer is missing and conflicting refrences?UseSqlServer 缺少和冲突的引用?
【发布时间】:2019-03-24 09:15:03
【问题描述】:

我正在尝试在 .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 检测到软件包降级: Microsoft.Extensions.Configuration 从 2.2.0 到 2.1.1。参考 直接从项目中打包以选择不同的版本。
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 检测到软件包降级: Microsoft.Extensions.DependencyInjection 从 2.2.0 到 2.1.1。 直接从项目中引用包来选择不同的 版本。 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?

【问题讨论】:

    标签: c# entity-framework nuget


    【解决方案1】:

    NU1605 的默认严重性是警告,由于您将其视为错误,这意味着您的项目已选择将错误视为警告。

    包降级的原因可能是NuGet's nearest-wins rule。避免降级的唯一方法是将降级包的 PackageReference 添加到您的项目中,这样您选择的版本总是最接近的,并且瞬态依赖项永远不会降级。

    否则,您可以通过关闭“将所有警告视为错误”并仅列出您希望将其视为错误的特定警告来停止自欺欺人。或者,将 NU1605 添加到要禁止的警告列表(csproj 中的<NoWarn>)。

    【讨论】:

    • 开启“将所有警告视为错误”并不能解决问题。看起来它只在构建那个 DAL 项目时就消失了,但是在构建引用 de DAL 的 BLL 时,我在 BLL 和 DAL 上都得到了相同的错误。你能解释一下 PackageReference 部分吗?
    • 我看到警告 NU1605 是在所有解决方案项目中默认指定的,以将它们专门视为错误。现在已关闭。
    • 我将大部分掘金更改为 2.1.1,不,我没有收到任何错误或警告?
    • 您最后的评论以问号结尾,但句子是陈述而非问题。如果你想问什么,我不知道你在问什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    相关资源
    最近更新 更多