views 多个文件夹 netcore_.NET Core 分发打包

67e5e8bda17e95da895c59b4760bf4c2.png

由于 .NET Core 现已可用于更多平台,因此了解如何为其打包、命名并进行版本控制将很有用。 这样,无论用户选择在哪里运行 .NET,包维护人员均可以帮助确保获得一致的体验。 本文对以下用户非常有用:

  • 尝试从源生成 .NET Core。
  • 想要更改 .NET Core CLI,但更改可能会影响生成的布局或包。

磁盘布局

安装时,.NET Core 包含一些组件,这些组件在文件系统中排列如下:

复制

{dotnet_root}                                     (*)├── dotnet                       (1)├── LICENSE.txt                  (8)├── ThirdPartyNotices.txt        (8)├── host                                          (*)│   └── fxr                                       (*)│       └──         (2)├── sdk                                           (*)│   ├──             (3)│   └── NuGetFallbackFolder      (4)              (*)├── packs                                         (*)│   ├── Microsoft.AspNetCore.App.Ref              (*)│   │   └──      (11)│   ├── Microsoft.NETCore.App.Ref                 (*)│   │   └──         (12)│   ├── Microsoft.NETCore.App.Host.          (*)│   │   └──             (13)│   ├── Microsoft.WindowsDesktop.App.Ref          (*)│   │   └──         (14)│   └── NETStandard.Library.Ref                   (*)│       └──         (15)├── shared                                        (*)│   ├── Microsoft.NETCore.App                     (*)│   │   └──      (5)│   ├── Microsoft.AspNetCore.App                  (*)│   │   └──   (6)│   ├── Microsoft.AspNetCore.All                  (*)│   │   └──   (6)│   └── Microsoft.WindowsDesktop.App              (*)│       └──  (7)└── templates                                     (*)│   └──       (17)/├── etc/dotnet│       └── install_location     (16)├── usr/share/man/man1│       └── dotnet.1.gz          (9)└── usr/bin        └── dotnet               (10)
  • (1) dotnet 主机(也称为“muxer”)有两个不同角色:激活运行时以启动应用程序,及激活 SDK 以向其分派命令。 主机是本机可执行文件 (dotnet.exe)。

主机只有一个,不过大部分的其他组件都在带有版本的目录中(2、3、5 和 6)。 这意味着系统上可存在多个版本,因为它们是并排安装的。

  • (2) host/fxr/ 包含了主机所使用的框架解析逻辑。 主机采用已安装的最新 hostfxr。 在执行 .NET Core 应用程序时,hostfxr 负责选择合适的运行时。 例如,为 .NET Core 2.0.0 生成的应用程序会使用 2.0.5 运行时(如果可用)。 同样,hostfxr 在开发期间也会选择适当的 SDK。
  • (3) sdk/ SDK(也称为“工具”)是一组托管工具,可用于编写和生成 .NET Core 库和应用程序。 SDK 包括 .NET Core CLI、托管的语言编译器、MSBuild 及相关生成任务和目标、NuGet、新项目模板等。
  • (4) sdk/NuGetFallbackFolder 包含 SDK 在还原操作期间使用的 NuGet 包的缓存,例如在运行 dotnet restore 或 dotnet build 时。 此文件夹仅在 .NET Core 3.0 之前使用。 不能从源生成它,因为它包含来自 nuget.org 的预构建二进制资产。

“共享” 文件夹包含框架。 共享框架提供一组位于中心位置的库,从而让不同的应用程序使用。

  • (5) shared/Microsoft.NETCore.App/ 此框架包含.NET Core 运行时和支持托管库。
  • (6) shared/Microsoft.AspNetCore.{App,All}/ 包含 ASP.NET Core 库。 已开发且支持 Microsoft.AspNetCore.App 下的库(作为 .NET Core 项目的一部分)。 Microsoft.AspNetCore.All 下的库是一个超集,其中还包含第三方库。
  • (7) shared/Microsoft.Desktop.App/ 包含 Windows 桌面库。 在非 Windows 平台上不包含此项。
  • (8) LICENSE.txt,ThirdPartyNotices.txt 分别是 .NET Core 许可证和 .NET Core 中使用的第三方库的许可证。
  • (9,10) dotnet.1.gz, dotnet dotnet.1.gz 是 dotnet 手册页。 dotnet 是指向 dotnet 主机 (1) 的符号链接。 这些文件安装在已知位置用于系统集成。
  • (11,12) Microsoft.NETCore.App.Ref,Microsoft.AspNetCore.App.Ref 分别描述了 x.y 版本 .NET Core 和 ASP.NET Core 的 API。 针对这些目标版本进行编译时,将使用这些包。
  • (13) Microsoft.NETCore.App.Host. 包含平台 rid 的本机二进制文件。 将 .NET Core 应用程序编译为适用于该平台的本机二进制文件时,将使用此二进制文件作为模板。
  • (14) Microsoft.WindowsDesktop.App.Ref 介绍 Windows 桌面应用程序 x.y 版本的 API。 在针对该目标进行编译时,将使用这些文件。 在非 Windows 平台上不提供此项。
  • (15) NETStandard.Library.Ref 描述了 netstandard x.y API。 在针对该目标进行编译时,将使用这些文件。
  • (16)“/etc/dotnet/install_location”是一个包含 {dotnet_root} 完整路径的文件 。 该路径可能以换行符结尾。 根路径为 /usr/share/dotnet 时无需添加此文件。
  • (17) templates 包含 SDK 使用的模板。 例如,dotnet new 在此处查找项目模板。

标记为 (*) 的文件夹被多个包使用。 某些包格式(例如,rpm)需要对此类文件夹进行特殊处理。 包维护人员必须处理这个问题。

推荐的包

.NET Core 版本控制基于运行时组件 [major].[minor] 版本号。 SDK 版本采用相同的 [major].[minor],并有一个独立的 [patch],它为 SDK 合并了功能和修补语义。 例如:SDK 版本 2.2.302 是支持 2.2 运行时的 SDK 的第 3 个功能版本的第 2 个补丁版本。 有关版本控制的工作原理的详细信息,请参阅 .NET Core 版本控制概述。

一些包在自己的名称中就包含一部分版本号。 这允许你安装特定版本。 版本名称中不包含版本的剩余部分。 这允许 OS 包管理器更新这些包(例如,自动安装安全修补程序)。 支持的包管理器特定于 Linux。

下面列出了推荐的包:

  • dotnet-sdk-[major].[minor] - 安装特定运行时的最新 SDK版本: 示例: dotnet-sdk-2.1包含: (3),(4)依赖项: dotnet-runtime-[major].[minor]、aspnetcore-runtime-[major].[minor]、dotnet-targeting-pack-[major].[minor]、aspnetcore-targeting-pack-[major].[minor]、netstandard-targeting-pack-[netstandard_major].[netstandard_minor]、dotnet-apphost-pack-[major].[minor]、dotnet-templates-[major].[minor]
  • aspnetcore-runtime-[major].[minor] - 安装特定 ASP.NET Core 运行时版本: 示例: aspnetcore-runtime-2.1包含: (6)依赖项: dotnet-runtime-[major].[minor]
  • dotnet-runtime-deps-[major].[minor] (可选) - 安装运行自包含应用程序的依赖项版本: 示例: dotnet-runtime-deps-2.1依赖项: 特定于分发的依赖项
  • dotnet-runtime-[major].[minor] - 安装特定运行时版本: 示例: dotnet-runtime-2.1包含: (5)依赖项: dotnet-hostfxr-[major].[minor]、dotnet-runtime-deps-[major].[minor]
  • dotnet-hostfxr-[major].[minor] - 依赖项版本: 示例: dotnet-hostfxr-3.0包含: (2)依赖项: dotnet-host
  • dotnet-host - 依赖项版本: 示例: dotnet-host包含: (1),(8),(9),(10),(16)
  • dotnet-apphost-pack-[major].[minor] - 依赖项版本: 包含: (13)
  • dotnet-targeting-pack-[major].[minor] - 允许面向非最新的运行时版本: 包含: (12)
  • aspnetcore-targeting-pack-[major].[minor] - 允许面向非最新的运行时版本: 包含: (11)
  • netstandard-targeting-pack-[netstandard_major].[netstandard_minor] - 允许面向 netstandard 版本版本: 包含: (15)
  • dotnet-templates-[major].[minor]版本: 包含: (15)

dotnet-runtime-deps-[major].[minor] 需要了解发行版特定依赖项 。 因为发行版生成系统可能能够自动派生包,所以包是可选的,如果选择,会将这些依赖项直接添加到 dotnet-runtime-[major].[minor] 包中。

当包内容位于受版本控制的文件夹下时,包名称 [major].[minor] 与受版本控制的文件夹名称匹配。 对于所有包(除 netstandard-targeting-pack-[netstandard_major].[netstandard_minor] 外),这也与 .NET Core 版本匹配。

包间的依赖关系应使用“等于或大于”版本要求 。 例如,dotnet-sdk-2.2:2.2.401 要求 aspnetcore-runtime-2.2 >= 2.2.6。 这使用户可以通过根包(例如 dnf update dotnet-sdk-2.2)升级其安装。

大多数分发都需要从源中构建所有项目。 这对包有一些影响:

  • 不能简单地从源生成 shared/Microsoft.AspNetCore.All 下的第三方库。 因此 aspnetcore-runtime 包中省略了该文件夹。
  • 使用 nuget.org 中的二进制项目填充了 NuGetFallbackFolder。 它应保留为空。

多个 dotnet-sdk 包可能会为 NuGetFallbackFolder 提供同样的文件。 若要避免包管理器出现问题,这些文件应完全相同(包括校验和、修改日期等等)。

生成包

dotnet/source-build 存储库中说明了如何生成 .NET Core SDK 的源 tarball 及其所有组件。 源版本存储库中的输出内容符合本文第一部分中所描述的布局。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

erlang安装_消息中间件(八)- RabbitMQ - 安装

步骤1:erlang步骤2:erlang 安装程序步骤3:配置路径步骤4:运行测试步骤5:安装 rabbitMQ步骤6:配置插件步骤7:重启 rabbitmq步骤8:管理员身份步骤9:重启 rabbitmq步骤10:访问管理界面步骤11:管理界面步骤 1 : erlangrabbitMQ 是基于 erlang 语言开发的,就如同 activem…

ihtml2document能不能根据id获取dom_使用DOM进行XML文件的解析

1. 什么是XML?xml是格式化的纯文本,用于存储数据和格式。2. DOM是什么?DOM是xml的一种解析方法(此外还包括SAX等,此处不提),它将xml文件抽象成为一个树型结构,这棵树个各个树叶就是节…

青茶什么时候拆_为什么日本绿茶那么绿?比中国的高级绿茶还要绿

我们经常可以从电影、电视、动画片、日式抹茶看到日本绿茶所呈现出来的样子,绿的,鲜脆欲滴的绿。到了日本,待客之道泡煎茶,可以更直观的看到煎茶的绿,这种绿是我们在国内不曾见到的绿,中国的高级绿茶也呈现…

单台web服务器性能,单台web服务器如何尽可能的提高网站性能

我觉得首先要选择一个合适的环境,对于大多数php站点来说,运行在lnmp(linuxnginxmysqlphp)环境下是个理想的选择.首先一点linux对比win的优势我就不说了。其次nginx的优势总结起来就是负载均衡,高并发性能优异。这里php采用fastcgi的方式接入n…

如何将dataset中的值赋值给datatable_金融行业实战项目:如何理解业务?

【面试题】下表是某金融App的数据,请结合Excel数据集中的数据完成下列问题(某金融公司面试题,文末有数据下载 )原始数据如下所示:为方便后期分析,我们对数据进行分类。数据通常分为3类:用户数据、行为数据、产品数据。…

css练习题4,复习webpack4之CSS文件代码分割

之前学习过webpack3的知识,但是webpack4升级后还是有很多变动的,所以这次重新整理一下webpack4的知识点,方便以后复习。这次学习webpack4不仅仅要会配置,记住核心API,最好还要理解一下webpack更深层次的知识&#xff0…

minhash算法检索相似文本_基于向量的深层语义相似文本召回?你需要bert和faiss...

在文章大话知识图谱--聊聊智能客服中,我介绍了智能客服系统利用FAQ问答库做自动问答,也就是基于信息检索的自动问答系统。它的一般做法流程是:构建一个大型的FAQ问答库,形式是(question,answer)…

vuex的命名空间有哪些_Python3 命名空间和作用域

命名空间先看看官方文档的一段话:A namespace is a mapping from names to objects.Most namespaces are currently implemented as Python dictionaries。命名空间(Namespace)是从名称到对象的映射,大部分的命名空间都是通过 Python 字典来实现的。命名…

ajax实现翻书效果,jQuery实现手机版页面翻页效果的简单实例

var page 1;var size 6;var mark 0;var url "{pigcms{:U(Order/index, array(page>d%))}";var commentTpl \去评价\;var template \""))}">\\{store_name}\\\\""))}">\\ \\{create_time}\总价:¥…

抽象类可以生成自己的对象吗_大理石可以自己抛光吗?大理石自己抛光方法解答...

大理石可以自己抛光吗?大理石自己抛光方法解答。大理石只有经过抛光后,表面才会有更好的光泽和质感。具体抛光可以要求大理石抛光团队施工,也可以自己做。那么大理石自己抛光方法是什么呢?下面石大夫为您解答。大理石自己抛光方法…

服务器可以装2个系统吗,云服务器可以装多个系统吗

云服务器可以装多个系统吗 内容精选换一换共享云硬盘是一种支持多个云服务器并发读写访问的数据块级存储设备,具备多挂载点、高并发性、高性能、高可靠性等特点。主要应用于需要支持集群、HA(High Available,指高可用集群)能力的关键企业应用场景&#x…

关卡 动画 蓝图 运行_UE4无缝过场动画

最近有个哥们给我看他们最近在做的一个游戏,其中有这样一段镜头https://www.zhihu.com/video/1171378736917364736运用到了一个很常用的过场方式,就是平时我们所说的无缝过场。过场动画不通过黑屏转换,而是通过运镜来代入。这是一种比较容易实…

个推的appid是指什么_推箱子软件介绍→安卓下最专业的推箱子软件(推箱快手)...

俗语说:工欲善其事必先利其器目前各安卓系统下的应用市场有很多很多推箱子软件,除了soko推箱子软件比较好以外,其余没有任何一款软件是推箱子好手想去使用的,为什么呢?先说说soko这款软件好在哪儿?点推式推…

list转字符串_剑指offer 38——字符串的排列

本题主要在于对回溯的理解,优化时可以结合 java 特性,以及排列的一些知识。原题输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s "abc&…

v5系列服务器后面板不存在以下哪款指示,群晖RS10613xs+ NAS服务器后面板简介

群晖RS10613xs NAS服务器后面板简介群晖RS10613xs NAS服务器后面板简介:NAS服务器的后面板往往承担着数据的输入、输出,电影的输入,网络的传输,容量的扩展,电能的支持以及产品的散热等重要功能,看似简单的后面板往往是…

怎么判断冠词用a还是an_【语法微课堂】英语冠词的用法,学会这4点,轻松玩转a、an、the...

点击上方??蓝色字,轻松关注!Well begun is half done.良好的开端是成功的一半。准备了一下午,终于可以给大家更新了,给大家分享了冠词讲解的视频、音频和文字版,自行取用吧!?冠词讲解视频版(小提示&…

pb自定义控件 事件_Android WebView与下拉刷新控件滑动冲突的解决方法

使用WebView时一般会在外层使用下拉刷新控件如(SwipeRefreshLayout)。但是测试时会发现网页无法上拉,往上滑动就会触发下拉刷新控件的refresh事件。所以这里记录一下解决该问题的办法。1、通过webView.getScrollY() 的值来判断是否滚动到顶部private SwipeRefreshLa…

双路服务器cpu必须型号相同,双路主板存在使用不同型号的cpu之说吗?还是必须使用一模一样相同的cpu型号?...

双路主板不存在使用不同型号的cpu一说, 可以使用不同型号的cpu, 不过参数差别不能过大(例如处理器的架构差别)多路主板就是一种主从结构, 处理器之间是协同工作,由中间的高速总线实现两个处理器的配合,不存在处理器必须…

打开多个界面_如何创建用户界面

CANBusKit,是一款集成汽车总线开发、测试、分析的专业软件工具。本章内容主要介绍如何使用CBK_OpenPanel工具为CANBUSKIT 工程创建用户界面,本工具目前支持Vector的xvp格式的面板文件导入。首先是启动软件(试用版软件只能从CANBusKit软件界面中启动该软件…

汤姆克兰西全境封锁服务器维护时间,汤姆克兰西全境封锁无法登录怎么解决 无法登录解决方法攻略...

《汤姆克兰西:全境封锁》是款大型射击游戏,这款游戏的画面十分的精致,在这款游戏中会有各种不同的任务,玩家要带着武器来进行射击。在游戏的时候很多玩家们都反映无法登录怎么解决?那么下面小编就为玩家们详细解说下关…