避免 .Net Standard 中的非跨平台依赖

时间:2021-01-22 09:40:38

标签: c# cross-platform .net-standard

我正在将现有库从 .Net Framework 4.7.2 移植到 .Net Standard 2.0 以使其跨平台但仍保持与 .Net Framework 应用程序的兼容性。

我不明白如何避免非跨平台依赖

我的库使用动态类型Settings.Designer.cs。

为了在 .Net Standard 中支持它,我必须向 Microsoft.CSharpSystem.Configuration.ConfigurationManager NuGet 包添加一个引用,这反过来又向其他一些包添加了依赖项,例如 { {1}},即使我没有使用任何与安全相关的代码。

最后两个显然是 Microsoft.Windows.Compatibility 包的一部分。

NuGet dependencies

  1. 如何确定这些依赖项是否跨平台(即 Windows 平台扩展的一部分)?

当我转到 .NET API Browser 时,我看到 System.Security.Principal.Windows 不在 .Net Standard 2.0 中,但它在 .Net Platform Extensions 2.1 及更高版本中。这是否意味着这个包不是跨平台的?是否有任何其他服务可以检查 NuGet 包的平台支持?

.NEt API results

  1. 当我在 .Net Core 2.1 上创建一个使用我的库的简单测试应用程序并使用 Microsoft.Csharp 将其发布到 Linux 平台时,该应用程序实际上在 Linux 机器上运行良好。这是否意味着我的 lib 是完全跨平台的,我可以安全地在生产中使用它,或者我将来在 Linux 上仍然可能遇到 dotnet publish -c Release --self-contained true --runtime linux-x64

0 个答案:

没有答案