C# 一个解决方案中的.Net核心和完整框架项目

C# 一个解决方案中的.Net核心和完整框架项目,c#,.net,.net-core,C#,.net,.net Core,假设我有一个包含几个项目的解决方案。其中一个项目是Main(放置常规代码和api的地方),其余的是一种扩展(Extension1、Extension2、Extension3),用于Main和使用第三方库。现在,我正在使解决方案在完整框架和.Net核心框架上兼容 在我开始添加对.NETCore的支持之前,这个解决方案已经有了依赖于目标框架的条件构建过程,所以我还没有条件构建的问题 我的问题是,部分第三方库与.NETCore还不兼容。这使得部分扩展与.NETCore不兼容。我想到的唯一选择是为完整框

假设我有一个包含几个项目的解决方案。其中一个项目是Main(放置常规代码和api的地方),其余的是一种扩展(Extension1、Extension2、Extension3),用于Main和使用第三方库。现在,我正在使解决方案在完整框架和.Net核心框架上兼容

在我开始添加对.NETCore的支持之前,这个解决方案已经有了依赖于目标框架的条件构建过程,所以我还没有条件构建的问题

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

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


提前谢谢大家

您想了解的内容-我还想看看关于它的详细信息

tl;dr是指.NET标准列出了.NET应用程序(框架、核心、WPF、Xamarin等)可以访问的API和方法。更高版本的标准包含更多的API,但减少了可以使用的框架数量(框架、核心、WPF、Xamarin等)

下面是不同框架是如何采用和支持.NET标准的

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

  • .NET核心2.0
  • .NET Framework 4.6.1
  • 单声道5.4 等等
这意味着任何针对这些框架的应用程序都可以访问.NET标准2.0中列出的API

在您的示例中,您可以将所有业务逻辑放在.NET标准兼容库中(无论它们是框架还是核心库),并有两个独立的主项目(一个用于框架,一个用于核心)

这可以通过三种不同的解决方案来实现:

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

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

是的,我知道.NET Core和.NET Standard之间存在差异。这不是问题。问题是,我必须为.Net Framework和.Net Core(或.Net标准)构建不同数量的项目的解决方案基本上,我的解决方案的构建从“dotnet msbuild/p:Configuration=Net45 Release solution.sln”或“dotnet msbuild/p:Configuration=Net45 Debug solutionon.sln”开始,每个项目都会自行处理给定的配置并初始化属性和内容。对于.Net Core,它将类似于“dotnet msbuild/p:configuration=NetCore20 Debug Solution.sln”,项目将根据配置定义目标框架。测试项目将设置netcoreapp2.0和库-netstandard2.0那么,猜测单独的解决方案和/或单独的项目是唯一的选项。是的,是的。我的目标是,您可以在解决方案中使用类库,并将相关类库加载到两个单独的解决方案中(一个用于.NET Framework,另一个用于.NET Core)。只要类库以.NET标准为目标,.NET Framework解决方案以.NET 4.6.1为目标,那么它就应该可以工作