哪个Visual Studio 2017项目类型可以选择用于跨平台的开源UI无关的C#类库以及为什么?

Iva*_*van 5 .net mono cross-platform visual-studio-2015 .net-core

我已经了解了一个我希望开发并发布到开源的C#类库.我希望在尽可能多的可用.Net平台上轻松提供(如有必要,可以重新编译)(例如完整的.Net,Mono,.Net Core,Xamarin,只有经典的.Net兼容性才是必须的,然而).该库不依赖于任何与UI相关的内容,也不依赖于Windows等WPF.

我只需要:

  1. 常见的.Net类型和API(我不想因为缺少我认为是该语言必不可少的部分而感到惊讶)
  2. JSON和XML操作工具
  3. 文件系统访问(可能有些限制),
  4. HTTPS客户端,
  5. SQL级别的RDBMS客​​户端(我不需要ORM功能,但当然不介意它可用)
  6. 尽可能反思
  7. 如果可能的话,异步和线程设施
  8. 可能是最新版本的C#语言

我在以下项目类型之间进行选择

  1. 类库(.NET Core)
  2. 类库(.NET标准)
  3. 类库(.NET Framework)
  4. 类库(便携式)

我听说过Portable就是它所说的但是现在我们已经在Linux和Mac上运行了Core(也许是Windows Phone和Xamarin?)而且我几乎没有使用EF Core的问题,显然是在我的经典Windows桌面上. .NET Framework应用程序.由于Mono和Xamarin,经典的.NET Framework代码似乎在非Windows平台上得到了很好的支持..NET标准 - 我不知道这意味着什么,我刚刚通过查找"类库"的所有变种,通过"新建项目"窗口搜索工具发现了这种类型.

我应该选择哪一个,为什么,以及我应该知道什么?

Lex*_* Li 9

  • .NET标准类库:最大的灵活性,应该能够在各种.NET应用程序/平台中使用(不断发展,因为尚未涵盖Unity).
  • .NET Framework类库:您应该知道的旧版本.
  • .NET核类库:在.NET核心应用程序之间共享代码.它存在,因为.NET Standard类库有其局限性(配置文件表面通常小于.NET Core应用程序).
  • 可移植类库(PCL):您现在可以避免使用它们,除非您确实需要支持传统平台.使用.NET Standard更好,面向未来.

您可以轻松地运行一些实验来断言我上面的陈述.

作为一名图书馆出版商,我现在选择发布包含.NET Framework版本,.NET标准版本和PCL版本的NuGet软件包,并且从长远来看会逐渐放弃.NET Framework和PCL版本.许多其他图书馆都这样做.

我还写了一篇博文来报道更多,

https://blog.lextudio.com/which-class-library-project-to-go-in-visual-studio-2015-2017-a48710cf3dff