c# - .Net Core 和 Full Framework 项目在一个解决方案中

标签 c# .net .net-core

假设我有一个包含多个项目的解决方案。其中一个项目是 Main(放置通用代码和 API),其余项目是 Main 的扩展(Extension1、Extension2、Extension3)并使用第三方库。现在,我正在使解决方案在 Full Framework 和 .Net Core Framework 上兼容。

在我开始添加对 .Net Core 的支持之前,该解决方案已经根据目标框架进行了条件构建过程,因此我对条件构建没有任何问题。

我遇到的问题是部分第三方库与 .Net Core 不兼容。这使得部分扩展与 .Net Core 不兼容。我想到的唯一选择是为完整框架和 .Net Core Framework 提供单独的解决方案和代码库。但是我希望在这两种情况下都有相同的代码库,因为我的代码与这两种框架都非常兼容,否则支持起来会很麻烦。

是否有可能针对这种情况只有一个解决方案,并且能够为完整框架构建 (Main + (Extension1, Extension2, Extension3)) 项目,为 .Net Core Framework 构建 (Main + (Extension1, Extension2)) 项目?如果不是,我有什么选择?

先谢谢大家

最佳答案

您想调查 .NET Standard - 我还会看一下 videos put out by Immo Landwerth关于它。

tl;dr 是 .NET Standard 列出了您可以期望 .NET 应用程序(Framework、Core、WPF、Xamarin 等)访问的 API 和方法。标准的更高版本号包括更多 API,但会减少您可以使用的框架数量(Framework、Core、WPF、Xamarin 等)。

下面是不同框架如何采用和支持 .NET Standard 的可视化。

enter image description here

顶部是 .NET Standard 的版本,左侧是框架的版本。使用此图表,您可以看到 .NET Standard 2.0 受以下支持:

  • .NET 核心 2.0
  • .NET Framework 4.6.1
  • 单声道 5.4 等

这意味着任何以这些框架为目标的应用程序都可以访问 .NET Standard 2.0 中列出的 API。

在您的示例中,您可以将所有业务逻辑都放在 .NET Standard 兼容库中(无论它们是 Framework 还是 Core),并且有两个单独的 Main 项目(一个用于 Framework,一个用于 Core)。

这可以通过三个独立的解决方案来完成:

  • 一个用于您的 .NET Standard 类库
  • 一个用于 .NET Framework Main(包括 .NET Standard 类库)
  • 一个用于 .NET Core Main(包括 .NET Standard 类库)

您还可以将 .NET Standard 类库构建为 NuGet 包(有或没有外部托管它们)并将它们拉入您的两个(.NET Framework 和 .NET Core)主要解决方案。

关于c# - .Net Core 和 Full Framework 项目在一个解决方案中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47430005/

相关文章:

c# - 应用程序无法导航到 MainPage

c# - 已发布的控制台应用程序上没有 .NET Core 2.0 应用程序设置

iis - 使用 DotNet Core 将 API 部署到带有 IIS 的 Windows Server 2008 R2

c# - 使用 ReSharper 为属性生成只读字段

c# - MVC 5 的错误日志记录

c# - 如何为字符串格式提供自定义字符串占位符

asp.net - 为什么获取用户列表时获取角色的速度这么慢?

c# - 如何在 Visual Studio 中运行非持久查询

c# - 使用 azure-libraries-for-net 在 azure 上的 docker 中执行命令

c# - MVC Controller 使用 Json(object) 与 JavaScriptSerializer().Serialize(object) 编码 JSON