我将配置文件 259 的 PCL 更新为 .NET Standard 1.0,并希望相应地更新相应的 NuGet 包。我更改了包含实际 DLL 的文件夹 portable-net45+win8+wp8+wpa81
至 netstandard1.0
, 但我不太确定如何构建包 的依赖项.
如果我使用 .NET Core CLI 创建包 ( dotnet pack
),nuspec 文件中的依赖项部分如下所示:
<dependencies>
<group targetFramework="netstandard1.0">
<dependency id="NETStandard.Library" version="1.6.0" />
</group>
</dependencies>
但是,当我将此包安装到仍然使用 packages.config 的经典 .NET 4.5 或 PCL 项目时,此文件会被来自
NETStandard.Library
的所有依赖项“污染”。元包,像这样:不幸的是,official documentation尚未编写用于 .NET Core/.NET Standard 的 NuGet 包。
最佳答案
对于我维护的面向 .NET Core 和 .NET 4.5 的包,我不得不解决这个问题。我使用的方法涉及您问题的这两点:
netstandard1.X
之间拆分依赖项和 net45
.最初,使用 NETStandard.Library
metapackage 使定位前者变得容易。 NETStandard.Library
引用我实际需要的特定包。 在第一步中,我的 project.json 看起来像这样:
{
"dependencies": {
"MyOtherLibrary": "1.0.0"
},
"frameworks": {
"net45": {
"frameworkAssemblies": {
"System.Collections":"4.0.0.0"
}
},
"netstandard1.3": {
"dependencies": {
"NETStandard.Library": "1.6.0"
}
}
}
}
任何本身已经与任一框架兼容的依赖项进入
dependencies
,而特定的 .NET Core 或 .NET 4.5 依赖项则根据需要进入各自的部分。与
dotnet pack
,这正是我需要的:单个 .nupkg
它可以安装在任一类型的项目中,并且只提取该框架所需的内容。第二步,我换了
NETStandard.Library
使用 .NET Core 实际需要的几个包:{
"dependencies": {
"MyOtherLibrary": "1.0.0"
},
"frameworks": {
"net45": {
"frameworkAssemblies": {
"System.Collections":"4.0.0.0"
}
},
"netstandard1.3": {
"dependencies": {
"System.Threading.Tasks": "4.0.11",
"System.Net.Http": "4.1.0"
}
}
}
}
这第二步不是必需的,但是为两个平台生成一个具有最小依赖性的包是很好的。
NETStandard.Library
在开发阶段很有用,当您不太确定需要在核心 API 中使用什么时。
关于.net - 如何正确构建 netstandard1.0 NuGet 包的依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38545457/