多框架 Nuget 安装不正确的框架
Multi Framework Nuget Installing Incorrect Framework
我创建了一个针对 .Net 3.5 和 Net Standard 2.0 的 nuget。当我在 .Net 3.5 项目上安装 nuget 时,安装了正确版本的 nuget。但是,当我尝试在 .Net 4.6.1 项目上安装相同的 nuget 时,安装的是 net35 版本,而不是 Net Standard 2.0。我认为 .Net 4.6.1 与 Net Standard 2.0 兼容(根据微软官方文档:https://docs.microsoft.com/en-us/dotnet/standard/net-standard)。
是我遗漏了什么,还是 nuget 打包不正确?
NuGet 不是那样工作的。 NuGet 为它可以找到的项目使用最具体的目标框架。由于 NuGet 包中有一个以 .NET Framework 为目标的程序集,它将使用该程序集而不是 .NET Standard 程序集用于以 .NET Framework 为目标的项目。
如果 NuGet 包没有 lib/net35 文件夹,那么如果使用最新版本的 NuGet,.NET Standard 2.0 程序集将由 .NET Framework 4.6.1 项目使用。
如果您希望将不同的程序集用于 .NET 4.6.1 项目,那么您需要在 NuGet 包的 lib/net461 文件夹中有一个程序集。
我创建了一个针对 .Net 3.5 和 Net Standard 2.0 的 nuget。当我在 .Net 3.5 项目上安装 nuget 时,安装了正确版本的 nuget。但是,当我尝试在 .Net 4.6.1 项目上安装相同的 nuget 时,安装的是 net35 版本,而不是 Net Standard 2.0。我认为 .Net 4.6.1 与 Net Standard 2.0 兼容(根据微软官方文档:https://docs.microsoft.com/en-us/dotnet/standard/net-standard)。
是我遗漏了什么,还是 nuget 打包不正确?
NuGet 不是那样工作的。 NuGet 为它可以找到的项目使用最具体的目标框架。由于 NuGet 包中有一个以 .NET Framework 为目标的程序集,它将使用该程序集而不是 .NET Standard 程序集用于以 .NET Framework 为目标的项目。
如果 NuGet 包没有 lib/net35 文件夹,那么如果使用最新版本的 NuGet,.NET Standard 2.0 程序集将由 .NET Framework 4.6.1 项目使用。
如果您希望将不同的程序集用于 .NET 4.6.1 项目,那么您需要在 NuGet 包的 lib/net461 文件夹中有一个程序集。