强制 NuGet 包平台
Posted
技术标签:
【中文标题】强制 NuGet 包平台【英文标题】:Force NuGet Package platform 【发布时间】:2020-01-19 18:50:13 【问题描述】:我正在尝试在我的 DotNet Core 2.0 应用程序中使用由内部团队创建的 NuGet 包。
当我编译时,我收到以下警告:
使用“.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, 恢复包“MyInternalPackage 3.0.0.29” .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' 代替项目目标框架'.NETStandard,Version=v2.0'。这个包可能不完全兼容你的项目。
但是当我在 Visual Studio 的 NuGet 包管理器中查看包时,它会显示:
当我查看 NuGet 包中的 lib 文件夹时,它会显示这些文件夹:
net451 netcoreapp2.0那么,我如何强制它使用 netcoreapp2.0 库而不是完整的 Dot Net 框架库?
【问题讨论】:
您的包依赖于完整的框架和 .net 核心运行时。以 .net 标准 2.0 为目标。 .net 标准的东西只能真正引用其他 .net 标准的东西。 @DanielA.White - 这个包应该是一个“多目标”包,允许在完整框架和 dotnet 核心中使用。 (这就是为什么它对两者都有依赖) 当然,但您没有构建它的 .net 标准版本。这就是缺少的。 @DanielA.White - 啊,所以这是一个 .net 标准!= dotnet 核心问题? 是的。您尝试添加 的库是 .net 标准库,而不是 .net 核心库。 【参考方案1】:您要添加包的库是 .NET Standard 库。您的 NuGet 包没有 .NET Standard 的目标。你要么必须
-
生成 .NET Standard 包(首选)。
将您的类库改为以 .NET Core 为目标。
【讨论】:
为什么首选 .NET Standard? (仍在快速了解以 .NET Standard 为目标的含义。) @Vaccano 它允许您将类库与 .net 框架、uwp、.net core、xamarin 等一起使用 那么,构建 nuget 时是否只需要 .net 标准?这会得到他们所有吗? 将 .net 标准视为接口,将各种 .net 视为具体实现。 知道了!谢谢!以上是关于强制 NuGet 包平台的主要内容,如果未能解决你的问题,请参考以下文章
使用NuGet将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理