views 多个文件夹 netcore_.NET Core 分发打包
![](/assets/blank.gif)
由于 .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 及其所有组件。 源版本存储库中的输出内容符合本文第一部分中所描述的布局。
views 多个文件夹 netcore_.NET Core 分发打包相关推荐
- views 多个文件夹 netcore_.NET Core中的使用Kestrel服务器理解及应用
Kestrel是一个基于libuv的跨平台.NET Core web服务器,libuv是一个跨平台的异步I/O库.ASP.NET Core模板项目使用Kestrel作为默认的web服务器. Kestr ...
- views 多个文件夹 netcore_优化 .net core 应用的 dockerfile
优化 .net core 应用的 dockerfile Intro 在给 .net core 应用的写 dockerfile 的时候一直有个苦恼,就是如果有很多个项目,在 dockerfile 里写起 ...
- views 多个文件夹 netcore_Visual Studio 2019发布.NET Core项目部署或者独立运行的方法...
Visual Studio 2019发布.NET Core项目部署或者独立运行的方法 Visual Studio 2019是一款专为程序开发人员设计,支持 Windows 和 Mac系统,适用范围广, ...
- dede中直接编写php文件夹,织梦php如何打包文件夹呢? 直接上代码了
织梦php如何打包文件夹呢? 直接上代码了<?php /* * php打包程序 * templets/为你需要打包的目录 images.zip为你要打包的名字 * 制作人:小贺 * 时间: 20 ...
- java命令 jar文件夹_java中jar命令打包一个文件夹下的所有文件
(1)首先,必须保证java的所有路径都设置好,在dos提示符下输入jar -help 出现C:\Documents and Settings\dly>jar -help 非法选项:h 用法:j ...
- linux无法访问root文件夹,asp.net core 2.1部署到Linux无法访问wwwroot文件夹中的资源...
首先 publish,dotnet xxx.dll 要在 dll所在目录 着实不方便 我已经改成 配置的了 app.UseDefaultFiles ( new DefaultFilesOptions( ...
- webpack打包后的文件夹是空的_webpack打包Vue工程
插件库定义 CommonsChunkPlugin 这个插件就是用于提取公共模块的插件,它从chunks中的若干个chunk代码块中分析出他们公用的模块,并打包成name定义的chunk代码块,你会发现 ...
- sql server 快照_添加新文章,删除文章,更改快照文件夹路径和SQL Server复制中的数据筛选器行
sql server 快照 In the last articles, we have learned Configuring Snapshot and Transactional SQL Serve ...
- vue文件命名规范和文件夹命名规范
views 命名 views 文件夹下面是由 以页面为单位的vue文件 或者 模块文件夹 组成的,放在 src 目录之下,与 components.assets 同级. views 下的文件夹命名 v ...
最新文章
- js禁止用户右键等操作
- layui文本框填充值_layui框架常用输入框介绍
- 526个常用英语词组
- 控制发送的请求条数_一个 HTTP 请求的曲折经历
- Windows单机配置Zookeeper环境
- shiro中文api_Shiro
- wordpress 手动更新方法记录
- 如何使用nginx配置SSL证书?
- mysql 慢查询日志路径_mysql的慢查询日志
- win7计算机病毒制作教程,win7 64位旗舰版系统删除电脑病毒文件夹方法
- 对convertView和ViewHolder的理解
- C# 实现多种语言切换,通过VS实现
- 漫画 | 为什么程序猿996会猝死,而企业家007却不会?
- 字符移位 小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。 你能帮帮小Q吗? 输入描述: 输入数据有多组
- 图像处理/计算机视觉/python环境下如何用滤波器、算法恢复图片,对图片去污【附代码】
- 爱测未来移动-从Emmagee代码浅谈Android基础性能数据监控方法
- 贴片电容介质X5R与X7R之间的区别
- 鼠标的光标变成了下划线
- SETUP FACTORY安装完成后自动运行软件
- 物联网无线通信技术蓝牙、wifi、zigbee
热门文章
- java 数据类型 string_java的基本数据类型和引用数据类型都有哪些,string属于什么类型...
- python 创建一个空向量_Python之Django系列-创建第一个应用-5
- 线条边框简笔画图片大全_超治愈萌系手帐素材大全 美食旅游花草人物花边都备齐了...
- vc2017 linux printf,C/C++中自定义信息输出——printf与宏的配合使用
- keras安装_代码详解:构建一个简单的Keras+深度学习REST API
- VS2015无法打开包括文件corecrt.h 无法打开文件ucrtd.lib
- JavaSE——流程控制(接收输入Scanner、分支结构(if与switch)、循环结构(while、do-while与for))
- Django中间件与python日志模块 介绍
- 一篇文章搞懂数据仓库:常用ETL工具、方法
- Java8 Stream详解~聚合(max/min/count)