千家信息网

.NETCore应用类型Portableapps和Self-containedapps怎么用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,.NETCore应用类型Portableapps和Self-containedapps怎么用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的
千家信息网最后更新 2026年11月03日.NETCore应用类型Portableapps和Self-containedapps怎么用

.NETCore应用类型Portableapps和Self-containedapps怎么用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

有许多种方式可以用来考虑构建应用的类型,通常类型用来描述一个特定的执行模型或者基于此的应用。举例说:控制台应用(Console Application)、Web应用(Web Application)等等。所有这些类型的应用都可以用.NET Core来创建。.NET Core本身就是一个通用的开发平台。但是要赋予.NET Core跨平台的特性,.NET Core仍要需要一个角来发掘应用的类型,这被称为:应用的可移植性(application's portablility)。可移植性本质上意味着哪里可以运行你的应用程序以及要在某个特定的机器上运行需要满足哪些先决条件。

Portable applications

可移植应用是.NET Core的默认的应用类型。这需要.NET Core被事先安装到运行程序的目标机器上。这就意味着你作为开发人员,在不同的.NET Core装置之间你的程序是可移植的。这种类型的应用只需要携带、部署自身的代码和依赖即可(.NET Core库之外的)。为了创建一个可移植的应用程序,所有你需要做的就是在project.json里面设置目前.NET Core的类库,然后把frameworks改成如下所示:

"dependencies": { "Microsoft.NETCore.App": {   "version": "1.0.0",  "type": "platform" }},"frameworks": { "netcoreapp1.0": {}}

【Microsoft.NETCore.App】是一个"元数据包",它向你表明你的目标.NET Core类库。依赖里的【type:platform】属性意味着当发布时,发布工具将省略发布这些依赖的.NET Core类库文件,因为这些依赖类库文件已经随着.NET Core安装到目标服务器上了。

使用原生依赖的可以移植应用

使用原生依赖的可以移植应用是上面可移植应用的子集。这些可以移植的应用拥有一些在依赖链上特定地方指定的原生依赖,这样这些原生依赖项可以直接运行的目标平台,我们的可以移植程序也同样可以直接运行在这些平台上。最典型的例子就是我们的Kestrel服务器(ASP.NET 跨平台 Web 服务器),它的构建是基于libuv(原生依赖)。当你发布一个具有原生依赖的可移植应用时,所有的发布输出都和上述一致,至于原生依赖,发布输出则会为每一个RID(Runtime Identifier)生成一个文件夹。下面的project.json文件展示了一个可移植应用使用原生依赖:

"dependencies": { "Microsoft.NETCore.App": {   "version": "1.0.0",  "type": "platform" }, "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-*"},"frameworks": { "netcoreapp1.0": {}}

Self-contained applications

和可移植的应用不同,独立的应用不依赖任何分享的组件在你准备部署程序的目标机器上。和它名字的暗示一样,它意味着整个依赖是闭环的,运行时将会和整个程序一起发布。这会使整个发布包变更大一些,但是这也使得程序可以使用正确的原生依赖运行在任何一个.NET Core支持的平台上(而不用管.NET Core是否已事先被安装到目标服务器上)。这使得更加容易去部署你的应用程序到目标服务器上。因为现在应用程序的发布会自身携带运行时,所以必须事先明确指定哪些平台你的程序将会运行。比如,如果你想发布一个独立的程序到Windows 10,但不准备运行到macOS和Linux,这样你在开发时必须新增或删除一些平台(platforms)。完成一个独立的程序会经历很多步骤,但第一步需要删除任何 "type": "platform"

属性。第二步是保留对Microsoft.NETCore.App的依赖,它会拉入一些我们需要的剩余的事情。最后,我们需要在project.json中添加一个运行时(runtimes)节点,以此来表明我们的程序将会在哪些平台上运行。

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

当我们restore项目时,如果project.json中包含runtimes节点,NuGet将会restore所有指定的运行时。接下来,当需要为给定的平台发布应用程序时,我们使用如下的命令行:

dotnet publish --runtime

RID必须是project.json中指定的RID,如:win10-x64或者osx.10.11-x64,否则会报错。如果你将要发布到的操作系统是你当前的.NET Core正在运行的操作系统,则直接使用如下命令即可:

dotnet publish

但是你仍然需要在project.json中指定对应的RID。

但需要注意的是:在.NET Core Tools Preview 2 的时间期限内,独立的应用是从本机NuGet缓存中发布的,这就意味着应用所有的依赖包括.NET Core运行时和类库并不是运行优化的。因此,独立的应用比可移植的应用整体上性能要低,原因在于可移植应用所依赖的.NET Core运行时和类库都是随时可以运行(ready-to-run)的。

关于.NETCore应用类型Portableapps和Self-containedapps怎么用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

应用 运行 程序 移植 类型 平台 目标 应用程序 意味 服务器 服务 独立 就是 机器 问题 开发 不同 操作系统 中指 命令 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 盈实互联网科技 广州互联网科技公司 北京互联网科技有限公司 互联网科技英文 天津摩尔互联网科技 猫创互联网科技 互联网科技网站 互联网前沿科技 互联网巨头投资的硬核科技 山东吉时兔互联网科技有限公司 苏州五指互联网络科技有限 国大互联网教育科技有限公司工作 合肥互联网科技公司公章图片 南通创西澳互联网科技有限公司 广州百诚互联网科技有限公司官网 互联网科技股为什么大涨 容联科技互联网电商 银川新华互联网科技学校原画 陕西彩京云互联网科技有限公司 长沙易易互联网科技有限公司 湖北九亚互联网络科技有限公司 互联网科技未来 卓越科技(互联网 ) 上海喔噻互联网科技 科技创新互联网企业 宁夏众和广鑫互联网科技有限公司 互联网还是高科技吗 消费医药和互联网科技 互联网企业和网络科技有限公司 互联网科技快速发展优美句子
0