我正在将现有库从 .Net Framework 4.7.2 移植到 .Net Standard 2.0 以使其跨平台但仍保持与 .Net Framework 应用程序的兼容性。
我不明白如何避免非跨平台依赖。
我的库使用动态类型和Settings.Designer.cs。
为了在 .Net Standard 中支持它,我必须向 Microsoft.CSharp
和 System.Configuration.ConfigurationManager
NuGet 包添加一个引用,这反过来又向其他一些包添加了依赖项,例如 { {1}},即使我没有使用任何与安全相关的代码。
最后两个显然是 Microsoft.Windows.Compatibility 包的一部分。
当我转到 .NET API Browser 时,我看到 System.Security.Principal.Windows
不在 .Net Standard 2.0 中,但它在 .Net Platform Extensions 2.1 及更高版本中。这是否意味着这个包不是跨平台的?是否有任何其他服务可以检查 NuGet 包的平台支持?
Microsoft.Csharp
将其发布到 Linux 平台时,该应用程序实际上在 Linux 机器上运行良好。这是否意味着我的 lib 是完全跨平台的,我可以安全地在生产中使用它,或者我将来在 Linux 上仍然可能遇到 dotnet publish -c Release --self-contained true --runtime linux-x64
?