选择哪种 Visual Studio 2017 项目类型作为跨平台开源 UI 不可知 C# class 库,为什么?
Which Visual Studio 2017 project type to choose for a cross-platform open-source UI-agnostic C# class library and why?
我有一个 C# class 库的想法,我想开发并发布到开源。我想让它在尽可能多的可用 .Net 平台(例如完整的 .Net、Mono、.Net Core、Xamarin,只有 classic .Net 兼容性然而,这确实是必须的)。该库不会依赖于任何 UI 相关的东西,也不依赖于 Windows 的任何东西,比如 WPF。
我只需要:
- 常见的 .Net 类型和 API(我不想因为缺少我认为是语言的重要组成部分的东西而感到惊讶)
- JSON 和 XML 操纵设施
- 文件系统访问(可能有些限制),
- HTTPS 客户端,
- SQL 级 RDBMS 客户端(我不需要 ORM 功能,当然不介意它可用)
- 如果可能的话反思
- 尽可能使用异步和线程工具
- 可能是最新版本的C#语言
我在以下项目类型中进行选择
- Class 库 (.NET Core)
- Class 库(.NET 标准)
- Class 库 (.NET Framework)
- Class 图书馆(便携式)
我听说 Portable 就是它所说的,但现在我们已经有了在 Linux 和 Mac 上运行的核心(Windows Phone 和 Xamarin 也许也是?)而且我在使用 EF Core 时几乎没有任何问题,它显然在我的 classic Windows 桌面 .NET Framework 应用程序中以它为目标。由于 Mono 和 Xamarin,Classic .NET Framework 代码似乎在非 Windows 平台上得到了很好的支持。 .NET Standard - 我不知道这是什么意思,我刚刚使用 "New Project" window 搜索工具通过查找 "Class Library".[=13 的所有变体发现了这种类型=]
我应该选择哪一个,为什么,我应该知道什么?
- .NET Standard Class 库:最大的灵活性,应该能够在各种 .NET 中使用 applications/platforms(不断发展,因为尚未涵盖 Unity)。
- .NET Framework Class 库:你也应该知道的旧知识。
- .NET Core Class 库:在 .NET Core 应用程序之间共享代码。它存在,因为 .NET Standard class 库有其局限性(配置文件表面通常小于 .NET Core 应用程序)。
- 便携式 Class 库 (PCL):您现在可以避免使用它们,除非您确实需要支持旧版平台。使用 .NET Standard 更好,而且面向未来。
您可以轻松地 运行 一些实验来断言我在上面所做的陈述。
作为库发布者,我选择此时发布包含.NET Framework 版本、.NET Standard 版本和PCL 版本的NuGet 包,并逐渐放弃.NET Framework 和PCL 长版本 运行。许多其他图书馆也这样做。
我还写了一篇博客post来涵盖更多内容,
https://blog.lextudio.com/which-class-library-project-to-go-in-visual-studio-2015-2017-a48710cf3dff
我有一个 C# class 库的想法,我想开发并发布到开源。我想让它在尽可能多的可用 .Net 平台(例如完整的 .Net、Mono、.Net Core、Xamarin,只有 classic .Net 兼容性然而,这确实是必须的)。该库不会依赖于任何 UI 相关的东西,也不依赖于 Windows 的任何东西,比如 WPF。
我只需要:
- 常见的 .Net 类型和 API(我不想因为缺少我认为是语言的重要组成部分的东西而感到惊讶)
- JSON 和 XML 操纵设施
- 文件系统访问(可能有些限制),
- HTTPS 客户端,
- SQL 级 RDBMS 客户端(我不需要 ORM 功能,当然不介意它可用)
- 如果可能的话反思
- 尽可能使用异步和线程工具
- 可能是最新版本的C#语言
我在以下项目类型中进行选择
- Class 库 (.NET Core)
- Class 库(.NET 标准)
- Class 库 (.NET Framework)
- Class 图书馆(便携式)
我听说 Portable 就是它所说的,但现在我们已经有了在 Linux 和 Mac 上运行的核心(Windows Phone 和 Xamarin 也许也是?)而且我在使用 EF Core 时几乎没有任何问题,它显然在我的 classic Windows 桌面 .NET Framework 应用程序中以它为目标。由于 Mono 和 Xamarin,Classic .NET Framework 代码似乎在非 Windows 平台上得到了很好的支持。 .NET Standard - 我不知道这是什么意思,我刚刚使用 "New Project" window 搜索工具通过查找 "Class Library".[=13 的所有变体发现了这种类型=]
我应该选择哪一个,为什么,我应该知道什么?
- .NET Standard Class 库:最大的灵活性,应该能够在各种 .NET 中使用 applications/platforms(不断发展,因为尚未涵盖 Unity)。
- .NET Framework Class 库:你也应该知道的旧知识。
- .NET Core Class 库:在 .NET Core 应用程序之间共享代码。它存在,因为 .NET Standard class 库有其局限性(配置文件表面通常小于 .NET Core 应用程序)。
- 便携式 Class 库 (PCL):您现在可以避免使用它们,除非您确实需要支持旧版平台。使用 .NET Standard 更好,而且面向未来。
您可以轻松地 运行 一些实验来断言我在上面所做的陈述。
作为库发布者,我选择此时发布包含.NET Framework 版本、.NET Standard 版本和PCL 版本的NuGet 包,并逐渐放弃.NET Framework 和PCL 长版本 运行。许多其他图书馆也这样做。
我还写了一篇博客post来涵盖更多内容,
https://blog.lextudio.com/which-class-library-project-to-go-in-visual-studio-2015-2017-a48710cf3dff