将库移植到 .NetCore。我怎么知道哪些 nuget 引用是 'full' .NetCore(因此 Linux/Mac 兼容)
Porting a library to .NetCore. How do I know which nuget references are 'full' .NetCore (and therefore Linux/Mac compatible)
我目前的任务是将代码库移植到 .NetCore。从根本上说,这进行得相当顺利,但有一件事让我担心,那就是保持平台独立性。
核心设计为 Mac 和 Linux 上的 运行 所以我想确保库也将 Mac 上的 运行 和 Linux 当我完成时。但是,为了让事情正常进行,我发现自己包含了很多非 Microsoft.AspNetCore.* nuget 包。 (例如 System.Diagnostics.Process、System.Net.Http、System.Threading.Thread 等)
显然这在 Windows 上不会有问题,但我确实想知道如果有人以 Linux 为目标包括对我的图书馆的引用是否会导致问题?
如果这不是问题,那很好,但如果是,那么我怎么知道哪些 nuget 包在多平台库中是可以的? (例如,是否只有 AspNetCore 可以跨平台工作?)
System.* 包(通常)来自 https://github.com/dotnet/corefx,99.5% 的用例将在 macOS 上运行,并且(支持)Linux(发行版)与它们一样在 Windows.
在 种情况下,System.* 包无法按您期望的方式工作。这主要是因为 .NET 添加便利性 APIs 来包装 Windows 行为。因此,例如,读取注册表项将不起作用(即使在注册表 API 起作用的未来,它肯定不会得到合法配置单元的支持,因此读取模糊值将报告未找到密钥).大多数情况下,当 API 不会对 Linux/macOS 起作用时,它会抛出 PlatformNotSupportedException
,而不是产生某种 unexpected/wrong 结果。
因此,只要您对所做的事情没有特别的感觉 "Windows-y",来自 netstandard* 或 netcoreapp* RID 的所有内容都应该可以正常工作。如果没有,您可以随时在 corefx github 项目中提出问题。
我目前的任务是将代码库移植到 .NetCore。从根本上说,这进行得相当顺利,但有一件事让我担心,那就是保持平台独立性。
核心设计为 Mac 和 Linux 上的 运行 所以我想确保库也将 Mac 上的 运行 和 Linux 当我完成时。但是,为了让事情正常进行,我发现自己包含了很多非 Microsoft.AspNetCore.* nuget 包。 (例如 System.Diagnostics.Process、System.Net.Http、System.Threading.Thread 等)
显然这在 Windows 上不会有问题,但我确实想知道如果有人以 Linux 为目标包括对我的图书馆的引用是否会导致问题?
如果这不是问题,那很好,但如果是,那么我怎么知道哪些 nuget 包在多平台库中是可以的? (例如,是否只有 AspNetCore 可以跨平台工作?)
System.* 包(通常)来自 https://github.com/dotnet/corefx,99.5% 的用例将在 macOS 上运行,并且(支持)Linux(发行版)与它们一样在 Windows.
在 种情况下,System.* 包无法按您期望的方式工作。这主要是因为 .NET 添加便利性 APIs 来包装 Windows 行为。因此,例如,读取注册表项将不起作用(即使在注册表 API 起作用的未来,它肯定不会得到合法配置单元的支持,因此读取模糊值将报告未找到密钥).大多数情况下,当 API 不会对 Linux/macOS 起作用时,它会抛出 PlatformNotSupportedException
,而不是产生某种 unexpected/wrong 结果。
因此,只要您对所做的事情没有特别的感觉 "Windows-y",来自 netstandard* 或 netcoreapp* RID 的所有内容都应该可以正常工作。如果没有,您可以随时在 corefx github 项目中提出问题。