【问题标题】:.Net Core and Full Framework projects in one solution.Net Core 和完整框架项目在一个解决方案中
【发布时间】:2017-11-22 08:32:34
【问题描述】:

假设我有一个包含多个项目的解决方案。其中一个项目是 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)) 项目?如果不是,我有什么选择?

提前谢谢大家

【问题讨论】:

    标签: c# .net .net-core


    【解决方案1】:

    你想了解.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 的示意图。

    顶部是 .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 Standard 类库提供一个
    • 一个用于 .NET Framework Main(包括 .NET Standard 类库)
    • 一个用于 .NET Core Main(包括 .NET Standard 类库)

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

    【讨论】:

    • 是的,我知道 .net 核心和 .net 标准之间存在差异。这不是问题。问题是我必须为 .Net Framework 和 .Net Core(或 .Net Standard)构建我的解决方案
    • 基本上,我的解决方案的构建开始于“dotnet msbuild /p:Configuration=Net45-Release Solution.sln”或“dotnet msbuild /p:Configuration=Net45-Debug Solutuon.sln”,每个项目自己处理给定的配置并初始化属性和东西。
    • 对于.Net Core,它将类似于“dotnet msbuild /p:Configuration=NetCore20-Debug Solution.sln”,项目将根据配置定义目标框架。测试项目会设置netcoreapp2.0和库——netstandard2.0
    • 好吧,猜测单独的解决方案和/或单独的项目是唯一的选择。可惜了
    • 啊,是的。我的目标是您可以将类库放在解决方案中,并将相关的类库加载到两个单独的解决方案中(一个用于 .NET Framework,一个用于 .NET Core)。只要类库以 .NET Standard 为目标,而 .NET Framework 解决方案以 .NET 4.6.1 为目标,那么它应该可以工作
    猜你喜欢
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 2021-09-07
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多