将 .Net Framework class 库添加到 .Net 核心控制台应用程序是个好主意吗
Is it a good idea to add .Net Framework class library to .Net core console application
我创建了一个新的 .net 核心控制台应用程序,我将所有 BL 和 DAL 都放在 .net Framework 中的 NuGet 包中(其中一些 class 库在 .Net Framework 2.0 中).如果我在 .Core 库中安装此 NuGet,它显然无法正常工作。
所以问题是,如果我添加一个 .Net Framework(4.7) class 库并在其中安装这个 Nuget 和 EFCore 会有什么问题吗?我可以在 .Net 核心控制台应用程序中使用这个 class 库吗?
到目前为止我做了什么:
我已将 .net Framework class 库添加到安装了此 NuGet 和 EF Core 的解决方案中,我在 class 库中没有看到任何错误。
不,这是个坏主意,而且行不通。
任何 .NET Framework 编译的库都不能在 .NET Core 项目中使用和引用,反之亦然。
您可以使用 NuGet 包来完成,但最好通过将代码转换为 .NET Standard 来降低失败风险。
因为只要您的 .NET Framework class 库不包含非 .NET Standard 命名空间和 classes.
,您就可以在 .NET Core 中安全使用
查看此官方 .NET Standard 兼容性参考资料:
https://docs.microsoft.com/en-us/dotnet/standard/net-standard
您也可以通过以下方式手动检查 API 兼容性:
https://apisof.net
更新 1:
感谢 Jon Skeet 的评论,看起来有一种方法可以通过使用针对 .NET Framework 的 nuget 包将 .NET Framework 引用到 .NET Core 中!
但是它仍然有可能无法工作,特别是如果第三方库使用 classes 仅在未移植到 .NET Core 的 .NET Framework 中可用,例如 Workflow Foundation 和服务器-侧 WCF.
我不会删除我的答案,因为我也必须保留我的答案作为我的一课:)
更新 2:按照 Jon 的建议,改写为从仅可使用 NuGet 包参考更新的方法。
我创建了一个新的 .net 核心控制台应用程序,我将所有 BL 和 DAL 都放在 .net Framework 中的 NuGet 包中(其中一些 class 库在 .Net Framework 2.0 中).如果我在 .Core 库中安装此 NuGet,它显然无法正常工作。
所以问题是,如果我添加一个 .Net Framework(4.7) class 库并在其中安装这个 Nuget 和 EFCore 会有什么问题吗?我可以在 .Net 核心控制台应用程序中使用这个 class 库吗?
到目前为止我做了什么:
我已将 .net Framework class 库添加到安装了此 NuGet 和 EF Core 的解决方案中,我在 class 库中没有看到任何错误。
不,这是个坏主意,而且行不通。
任何 .NET Framework 编译的库都不能在 .NET Core 项目中使用和引用,反之亦然。
您可以使用 NuGet 包来完成,但最好通过将代码转换为 .NET Standard 来降低失败风险。 因为只要您的 .NET Framework class 库不包含非 .NET Standard 命名空间和 classes.
,您就可以在 .NET Core 中安全使用查看此官方 .NET Standard 兼容性参考资料: https://docs.microsoft.com/en-us/dotnet/standard/net-standard
您也可以通过以下方式手动检查 API 兼容性: https://apisof.net
更新 1: 感谢 Jon Skeet 的评论,看起来有一种方法可以通过使用针对 .NET Framework 的 nuget 包将 .NET Framework 引用到 .NET Core 中!
但是它仍然有可能无法工作,特别是如果第三方库使用 classes 仅在未移植到 .NET Core 的 .NET Framework 中可用,例如 Workflow Foundation 和服务器-侧 WCF.
我不会删除我的答案,因为我也必须保留我的答案作为我的一课:)
更新 2:按照 Jon 的建议,改写为从仅可使用 NuGet 包参考更新的方法。