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

时间:2017-03-11 16:05:54

标签: .net visual-studio-2015 mono cross-platform .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#语言
  9. 我在以下项目类型中进行选择

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

      的所有变种

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

1 个答案:

答案 0 :(得分: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