gpt4 book ai didi

c# - ServiceStack OrmLite-Mysql 兼容性 (5.4.0) (.net c#)

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:05 25 4
gpt4 key购买 nike

我们有一个由 .net Framework (4.7.2) 和 .net Standard (2.0) 项目组成的解决方案。根据此页面:http://docs.servicestack.net/templates-corefx#reference-core-packages然后我们应该只引用 .Core 包。在这种情况下,我们需要 ServiceStack.OrmLite 和 ServiceStack.OrmLite.Mysql,因此我安装了 ServiceStack.OrmLite.Core 和 ServiceStack.OrmLite.Mysql.Core。两者都在同一个 5.4.0 版本上。

Image: Installed nugets

但是,这样做时 VS(2017 年和 2019 年 p3)会给我编译错误说明(除其他外,但我认为所有这些都归结为同一个问题):

类型“IOrmLiteDialectProvider”同时存在于“ServiceStack.OrmLite,Version=5.0.0.0,Culture=neutral,PublicKeyToken=null”和“ServiceStack.OrmLite,Version=5.0.0.0,Culture=neutral,PublicKeyToken=02c12cbda47e6587”中

我们在这里看到的是,其中一个包具有 PublicKeyToken=null,而另一个包具有 key 02c12cbda47e6587。我的问题的根源可能是什么,我是否误解了我应该使用的 nugets 版本,或者 5.4.0 版本中的这两个包是否不兼容?

(如果我安装 OrmLite.Mysql.Core 版本 5.2.0 和 OrmLite 5.4.0,项目将编译但在运行时失败,因为它们引用不同版本的 Mysql)。

最后一点,有没有人知道为什么 .net 标准包被命名为“核心”。对我来说,得知核心包可以在我的 .net Framework 项目中使用是令人困惑的,因为 .net Core 和 .net Framework 项目不兼容,而 .net Core 和 .net Framework(当然)都可以使用 .net Standard。

最佳答案

此异常表明您有一个项目试图在同一项目中同时引用 ServiceStack.OrmLiteServiceStack.OrmLite.Core 包,而您永远不应这样做.

请阅读此existing answer小心,.Core 包应该只在尝试 Run ASP.NET Core Apps on the .NET Framework 时被引用, 但在任何时候你都不能拥有同时引用 .Core 和非 .Core 包的项目,你可以在不同平台之间共享依赖关系的唯一方法是通过多目标。

您可以从以下位置找到共享通用多目标项目的解决方案示例:

https://github.com/ServiceStackApps/HelloMobile#servicestack-server-app

这显示了多个主机如何能够共享相同的 Server.Common 的示例和 ServiceModel.csproj多目标项目:

  <PropertyGroup>
<TargetFrameworks>net46;netstandard2.0</TargetFrameworks>
<RootNamespace>Server</RootNamespace>
</PropertyGroup>

哪里.NET CoreASP.NET Core on .NET Framework将最终使用共同项目的 netstandard2.0 版本,而 classic ASP.NETHttpListener主机最终将使用 net46 构建。

关于c# - ServiceStack OrmLite-Mysql 兼容性 (5.4.0) (.net c#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54709039/

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