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

时间:2017-11-22 08:32:34

标签: 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))项目的完整框架和(Main +(Extension1,Extension2)).Net Core Framework?如果不是,我有什么选择?

提前谢谢大家

1 个答案:

答案 0 :(得分:2)

您希望了解.NET Standard - 我还要查看有关它的videos put out by Immo Landwerth

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

这里有一个关于.NET Standard如何被不同框架采用和支持的视觉效果。

enter image description here

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

  • .NET Core 2.0
  • .NET Framework 4.6.1
  • 单声道5.4 等

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

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

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

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

您还可以将.NET标准类库构建为NuGet包(无论是否在外部托管它们),并将它们放入您的两个(.NET Framework和.NET Core)主要解决方案中。