.net 核心中的便携式库

Portable library in .net core

我是 .net core 的新手,对可移植库有疑问。

我已经创建了 .net 核心 Web 应用程序,project.json 的框架部分如下所示:

"frameworks": {
"netcoreapp1.0": {
"imports": [
"portable-net4+netcore45"
],
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0-*",
"type": "platform"
}
}
}
}

现在在上面的例子中,"portable-net4+netcore45"是什么意思?

这是否意味着我可以 运行 我的 .net 核心应用程序在只安装了 .net 框架 4 的机器上?

如果没有安装 .net core,它能工作吗?

不行,以上还是需要安装.NET Core,因为你使用的是"type": "platform",需要安装平台,包本身仅供参考。

如果你想运行 w/o .NET Core framework/SDK被安装,你必须把它改成

"dependencies": {
    "Microsoft.NETCore.App": "1.0.0"
},
"frameworks": {
    "netcoreapp1.0": {}
},
"runtimes": {
    "win10-x64": {},
    "osx.10.11-x64": {}
}

请注意添加了 "runtimes" 部分,如果您想 运行 w/o 安装 .NET Core,则 需要 运行时间,您需要将任何目标 OS 添加到此列表中,例如 Linux 等

"imports": ["portable-net4+netcore45"] 部分仅告诉 NuGet 它应该安装与两个目标匹配的可移植库,即使它们尚不支持 netcoreapp1.0/netstandard1.6

大多数以 Win8/8.1/UWP 为目标的库应该可以工作,但不能保证。导入只是告诉 nuget "install it anyways"。

查看 MSDN 文档,了解如何针对不同的 .NET Core App Types