gpt4 book ai didi

c# - .Net Core App 2.0 与 .Net Standard 2.0 库不兼容

转载 作者:行者123 更新时间:2023-11-30 23:07:23 24 4
gpt4 key购买 nike

在 Visual Studio 2017 中,我创建了一个包含以下内容的解决方案:

  • ASP.Net Core 网络应用程序项目 (ASP.Net MVC)
  • 创建为 .Net 标准库的两个类库项目

默认情况下,VS 2017 使这些类库以 .Net Standard 2.0 为目标,而 Web 应用程序以 .Net Core 1.1 为目标。

添加了项目依赖项 - Web 应用程序将两个类库都作为项目依赖项(因为它们包含核心功能,Web 应用程序只是前端)。

理论上,VS 应该选择合理的默认值。但是,这不会编译。我收到这样的错误:

Error   CS1705  
Assembly 'Entities' with identity 'Entities, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null' uses 'System.Runtime, Version=4.1.2.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' which has a higher version
than referenced assembly 'System.Runtime' with identity 'System.Runtime,
Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

我不知道如何更改对 System.Runtime 的引用,并且在 VS 中找不到这样做的选项。

好吧 - .Net Core 1.1 应该对于 .Net Standard 2.0 真的没有意义(即使 .Net Core 1.1 甚至没有在官方 .Net Standard 概述图中列出,请参阅 official MS Github documentation ,所以我怎么能确定呢?)。

因此,让我们更改它并将 Web 应用程序的目标修改为 .Net Core 2.0,以便一切都以 2.0 为目标 - 根据上面的官方图表,应该很好地吻合 - 所以在 VS with Projects > Properties 中,我们更改目标框架到 .Net Core 2.0,并重建解决方案。(请注意,我的 VS 实例默认设置为在每次重建时恢复 Nuget 包。)

再次无效。这次有不同的错误 - 这里有几个这样的错误:

    Error   NU1605  Detected package downgrade: System.Net.Primitives from 4.3.0 
to 4.0.11. Reference the package directly from the project to select a
different version.
UI.Web (>= 1.0.0) -> Microsoft.VisualStudio.Web.BrowserLink (>= 1.1.2) ->
Microsoft.AspNetCore.Hosting.Abstractions (>= 1.1.2) -> NETStandard.Library
(>= 1.6.1) -> System.Net.Primitives (>= 4.3.0)
UI.Web (>= 1.0.0) -> Microsoft.VisualStudio.Web.BrowserLink (>= 1.1.2) ->
System.Net.Primitives (>= 4.0.11) UI.Web C:\Source\Projects\Test
\UI.Web\UI.Web.csproj

在早期版本的 .Net Core 工具 (VS 2015) 中,有许多 JSON 文件允许调整依赖版本,但这在 VS 2017 中不再适用——csproj 是唯一的一个,它是 XML 格式的,不包含引用到错误中上面列出的任何包。

那么这是什么意思呢? .Net Core 2.0 与 .Net Standard 2.0 库不兼容?

有趣的是,这不是我第一次开发这种应用程序,就在几个月前,它开箱即用。查看一个运行良好的旧应用程序,我发现

  • .Net 标准库在 .Net Standard 1.6 上
  • ASP.Net Core 网络应用在 .Net Core 1.1 上

在我的新项目中更改了它 - 瞧,它有效。

但这仍然引发了这些问题:

  1. .Net Core 2.0 是否与 .Net Standard 2.0 库不兼容?
  2. VS 2017 中的一个问题是 .Net Core 的默认框架和 .Net Standard 库不相吻合,或者是什么我可以设置/配置吗?

最佳答案

尝试从 swagger.io 网络编辑器构建自动生成的 .NET Core 2.0 服务器 stub 时,我遇到了类似的问题。

这对我有帮助:

  1. 将目标从 .NET Core 2.0 切换到 .NET Core 1.1
  2. 尝试构建,遇到其他错误
  3. 将目标切换回 .NET Core 2.0

是的,这只是一个解决方法,但它让我前进。

关于c# - .Net Core App 2.0 与 .Net Standard 2.0 库不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47336772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com