当前位置: 首页 > 知识库问答 >
问题:

如何决定创建库的.net框架版本 [重复]

赵经国
2023-03-14

我想创建一个在中使用的库。Net框架应用程序和Xamarin应用程序。但是有3个框架版本:

  • .net core
  • .net 框架
  • .net 标准

所以我无法决定使用我的公共库的版本。

    < li >如果我创建一个. net标准库,它能在。net框架和。网芯。 < li >如果我创建一个. net核心库,它能在。net框架和。网络标准。

我对框架感到困惑。

共有3个答案

谢修真
2023-03-14

这里有很多令人困惑的其他答案。

首先,这取决于您针对的平台。

  1. 这是您想与世界共享的通用使用库吗?
  2. 它是要在多个平台上使用的应用程序特定库(即同一应用程序的可重用代码,即业务线应用程序)

您应该使用.NET Standard,因为它为您提供了最多的平台。您使用哪个版本取决于所需的功能。

如果你想接触最多的平台,试着把目标定得越低越好。NET标准1.0,它针对。网芯1.0,。NET Framework 4.5、Mono、Xamarin iOS 10/Mac 3.0/Android 7.0、UWP 10和Uniy 2018.1以及这些版本的所有更新版本)。

您可以在提供的链接中看到确切的。NET标准矩阵。

如果你需要特定的API,你必须以更高的版本为目标,比如.NET Standard 2.0,它比.NET Standard 1.1(来自.NET Framework的约22k个新API已经移植到.NET Core 2.0)API。

这可能不允许你所有的API(没有WPF/WinForm特定的API),但在通用的可重用库中,这应该不是一个问题。

在这里,如果可能,您还可以应用案例 1 提示。

如果这不能满足您的需求,并且您知道您不需要target。NET Core或Unity,您仍然可以使用老式的PCLs:可移植类库。

它们是.NET Standard(有点像.NET Standard的前身)的更复杂的版本,其中根据您面向的平台,API表面会缩小到仅允许在所有这些平台上运行的API使用。

现在不建议使用PCL,因为.NET标准是首选,并且更容易(对于库作者)使用和针对多个平台。

最后但并非最不重要的一点是,如果你真的只需要Windows和.NET Framework上的一些功能(或者你不关心.NET Core),你仍然可以交叉目标,即为所有平台提供.NET Standard 2.0,并仅将特定的API添加到net45目标和预处理器指令中(#if NET45 / #endif)。

这将编译成两个库,一个用于< code>netstandard2.0,另一个用于< code>net45(。NET Framework 4.5)。

李烨
2023-03-14

在编写C#库时,我想您知道类和接口之间的区别。类是某个功能集的具体实现,接口定义了可以从实现它的实例中获得的功能。

以此为例,。NET Framework和。NET Core就像类。. NET Framework是“经典”实现,而。NET Core是一个较新的实现,它具有能够在Linux上运行等优点。如果您构建一个库来定位。NET Core或。NET Framework,您正在构建它以这些具体实现之一为目标。

. NET Standard另一方面就像一个接口。每个版本的. NET Standard提供了一组功能,不同版本的. NET Framework/. NET Core实现了不同版本的. NET Standard。当您构建一个针对给定版本的库时。NET Standard,您是说您可以支持该表相应列中的所有具体实现。

决定目标的. NET Standard版本将取决于您实现库所需的功能。更多功能通常意味着更高的版本和支持更少的实现。更少的功能意味着更低的版本和更广泛的支持。

翁宜年
2023-03-14

这可能会帮助你做出决定

  1. 。Net Standard:用于构建可以从所有引用的库。NET实现,例如。NET Framework、。NET Core和Xamarin
  2. . Net Core:用于构建跨平台控制台应用程序和ASP.NETCore Web应用程序和云服务。

因此,如果您希望所有不同类型的.Net实现都支持您的库,.Net标准是一种可行的方法。

 类似资料:
  • 我正在尝试构建WebApi应用程序,该应用程序可以使用4.5.net框架托管环境。 我使用的是Visual Studio 2017(15.4.4版本),创建了带有Web Api核心库的空Web应用程序项目。默认情况下,它为4.6. net框架创建。 我将项目的目标框架更改为 4.5,删除并重新安装了所有包(它们现在在 packages.config 中都显示为 targetFramework=“n

  • 我按照以下网址的说明进行了操作: https://docs.microsoft.com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore-3.1 在.NET核心中创建gRPC服务和客户端,一切都很好。 接下来,我需要一个遗留的。NET框架应用程序访问该服务。我找到了一些安装的NuGet包,但没有找到任何告诉你如何使用它们来制作g

  • 我的目标是使用MFC创建一个无框架对话框,它是像图中所示的普通矩形,我对MFC应用程序有基本的了解。

  • 本文向大家介绍CI框架实现创建自定义类库的方法,包括了CI框架实现创建自定义类库的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了CI框架实现创建自定义类库的方法。分享给大家供大家参考,具体如下: 当我们使用 “类库” 这个词的时候,通常我们指的是位于 libraries 这个目录下的那些类。 接下来我们将介绍 如何在 application/libraries 目录下创建你自己的类库

  • 类库定义了可以从任何应用程序调用的类型和方法。 使用.NET Core开发的类库支持.NET标准库,该标准库允许您的库由任何支持该版本的.NET标准库的.NET平台调用。 当完成类库时,可以决定是将其作为第三方组件来分发,还是要将其作为与一个或多个应用程序捆绑在一起的组件进行包含。 现在开始在控制台应用程序中添加一个类库项目(以前创建的FirstApp项目为基础); 右键单击解决方案资源管理器 ,

  • 创建和配置你的版本库 在“版本库开发策略”一节,我们我们看了一些在创建和配置Subversion版本库之前需要做的重要决定,现在我们最终要干活了!在本小节,我们要看看如何真实的创建一个Subversion版本库,并配置它在特定版本库事件执行自定义动作。 创建版本库 创建一个 Subversion 版本库出乎寻常的简单。 Subversion 提供的svnadmin 工具,有一个执行这个功能的子命令