架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12295|回复: 0

[.NET Core] 【DotNet入门(二)】.NET Core编译和发布

[复制链接]
发表于 2019-1-21 17:10:26 | 显示全部楼层 |阅读模式
1、NET Core 命令行接口 (CLI) 工具
弃用 project.json,改为.csproj文件,在早期.net core中,project.json作为项目的配置文件,估计微软发现一些问题以后就弃用掉了,MSBuild还是作为.net的编译工具。

MSBuild介绍:https://docs.microsoft.com/zh-cn ... sbuild?view=vs-2017

很多人在开发项目的时候,总是以外需要安装Visual Studio才能编译生成项目,并不是的,在我们执行vs编译生成的时候,vs只是帮我们调用了MSBuild工具,也就是说我们编译.net项目的时候,完全不用安装vs工具。

.NET Core CLI工具命令如下:

.NET 命令行工具 (2.1.301)
使用情况: dotnet [runtime-options] [path-to-application]
使用情况: dotnet [sdk-options] [command] [arguments] [command-options]

path-to-application:
  要执行的应用程序 .dll 文件的路径。

SDK 命令:
  new              初始化 .NET 项目。
  restore          还原 .NET 项目中指定的依赖项。
  run              编译并立即执行 .NET 项目。
  build            生成 .NET 项目。
  publish          发布 .NET 项目以进行部署(包括运行时)。
  test             使用项目中指定的测试运行程序运行单元测试。
  pack             创建 NuGet 包。
  migrate          将基于 project.json 的项目迁移到基于 MSBuild 的项目。
  clean            清除生成输出。
  sln              修改解决方案(SLN)文件。
  add              将引用添加到项目中。
  remove           从项目中删除引用。
  list             列出项目参考或安装的工具。
  nuget            提供其他 NuGet 命令。
  msbuild          运行 Microsoft 生成引擎 (MSBuild)。
  vstest           运行 Microsoft 测试执行命令行工具。
  store            在运行时存储中存储指定的程序集。
  tool             安装或使用扩展 .NET 体验的工具。
  build-server     与由生成版本启动的服务器进行交互。
  help             显示帮助。

常用选项:
  -v|--verbosity        设置命令的详细级别。允许值为 q[uiet]、m[inimal]、n[ormal]、d[etailed] 和 diag[nostic]。
  -h|--help             显示帮助。

运行“dotnet 命令 --help”,获取有关命令的详细信息。

sdk-options:
  --version        显示使用中的 .NET Core SDK 版本。
  --info           显示 .NET Core 信息。
  --list-sdks      显示安装的 SDK。
  --list-runtimes  显示安装的运行时。
  -d|--diagnostics 启用诊断输出。

runtime-options:
  --additionalprobingpath <path>    要探测的包含探测策略和程序集的路径。
  --fx-version <version>            要用于运行应用程序的安装版共享框架的版本。
  --roll-forward-on-no-candidate-fx 已启用“不前滚到候选共享框架”。
  --additional-deps <path>          指向其他 deps.json 文件的路径。

Additional tools ('dotnet [tool-name] --help' for more information):
  dev-certs      Create and manage development certificates.
  ef             Entity Framework Core command-line tools.
  sql-cache      SQL Server cache command-line tools.
  user-secrets   Manage development user secrets.
  watch          Start a file watcher that runs a command when files change.

2、编译发布


发布 .NET 项目以进行部署(包括运行时)。
dotnet publish


C:\project\dotnet\test1>dotnet publish --help
使用情况: dotnet publish [选项]

选项:
  -h, --help                            显示帮助信息。
  -o, --output <OUTPUT_DIR>             用于放置已发布项的输出目录。
  -f, --framework <FRAMEWORK>           要发布的目标框架。目标框架必须在项目文件中指定。
  -r, --runtime <RUNTIME_IDENTIFIER>    针对给定运行时发布项目。创建自包含部署时使用此项。默认操作为发布依赖框架的应用。
  -c, --configuration <CONFIGURATION>   用于生成项目的配置。对大多数项目的默认值是 "Debug"。
  --version-suffix <VERSION_SUFFIX>     定义项目中 $(VersionSuffix) 属性的值。
  --manifest <manifest.xml>             指向目标清单文件的路径,该文件包含要通过发布步骤执行的包的列表。
  --no-build                            发布之前不要生成项目。Implies --no-restore.
  --self-contained                      随附应用程序发布 .NET Core 运行时,免除在目标计算机上安装运行时的需求。如果指定 了运行时标识符,则默认为 “true”。
  --no-restore                          请勿在执行命令时进行隐式还原。
  -v, --verbosity                       设置命令的详细级别。允许值为 q[uiet]、m[inimal]、n[ormal]、d[etailed] 和 diag[nostic]。
  --no-dependencies                     设置此标志以忽略项目到项目引用,并仅还原根项目。
  --force                               设置此标志以强制解析所有依赖项,即使最后一次还原已经成功。这等效于删除 project.assets.json。
从执行角度而言,CLI 命令会采用其参数并构造对“原始”MSBuild 的调用,从而设置所需属性和运行所需目标。 为更好的说明这点,请参考下面的命令:


此命令会使用“发布”配置将应用程序发布到 pub 文件夹。 在内部,此命令会转换成下面的 MSBuild 调用:
定义应用的目标平台


在 csproj 文件(该文件用于定义应用的目标平台)的 <PropertyGroup> 部分中创建 <RuntimeIdentifiers> 标记,然后指定每个目标平台的运行时标识符 (RID)。 请注意,还需要添加分号来分隔 RID。 请查看运行时标识符目录,获取运行时标识符列表。
例如,以下 <PropertyGroup> 部分表明应用在 64 位 Windows 10 操作系统和 64 位 OS X 10.11 版本的操作系统上运行。


如果我们只想生成win10 x64平台下面的发行版,可以执行如下命令:

输出文件夹:C:\project\dotnet\test1\bin\release\netcoreapp2.1\win10-x64\publish ,整个文件夹有66M,还是挺大的,如下图:

QQ截图20190121164953.jpg

生成centos.7-x64平台下面的发布包,有70M,也是挺大的,我们尝试发布到centos 7上面去执行一下(centos 7 系统没有安装.net core sdk)。

系统信息如下:

[root@master ~]# uname -a
Linux master 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@master ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
我们把文件上传到temp目录下面,尝试执行test1文件,可以正常输出,如下:

[root@master ~]# mkdir temp
[root@master ~]# cd temp/
[root@master temp]# ./test1
-bash: ./test1: 权限不够
[root@master temp]# cd ..
[root@master ~]# chmod -R 777 temp/
[root@master ~]# cd temp/
[root@master temp]# ./test1
Hello World!你好!
[root@master temp]# echo "http://www.itsvse.com"
http://www.itsvse.com
[root@master temp]#
QQ截图20190121170506.jpg

3、.NET Core运行标识符

.NET Core RID,RID 是运行时标识符的缩写。 RID 值用于标识应用程序运行所在的目标平台。 .NET 包使用它们来表示 NuGet 包中特定于平台的资产。 以下值是 RID 的示例:linux-x64、ubuntu.14.04-x64、win7-x64 或 osx.10.12-x64。 对于具有本机依赖项的包,RID 将指定在其中可以还原包的平台。

可以在项目文件的 <RuntimeIdentifier> 元素中设置一个 RID。 可以将多个 RID 定义为项目文件的 <RuntimeIdentifiers> 元素中的列表(以分号分隔)。

表示具体操作系统的 RID 通常遵循以下模式:[os].[version]-[architecture]-[additional qualifiers],其中:
  • [os] 是操作系统/平台系统名字对象。 例如 ubuntu。
  • [version] 是操作系统版本,使用的格式是以点 (.) 分隔的版本号。 例如 15.10。版本不应为营销版本,因为它们通常代表该操作系统的多个离散版本,且具有不同的平台 API 外围应用。
  • [architecture] 是处理器体系结构。 例如:x86、x64、arm 或 arm64。
  • [additional qualifiers] 进一步区分了不同的平台。 例如 aot 或 corert。



具体介绍:https://docs.microsoft.com/zh-cn/dotnet/core/rid-catalog

4、.NET Core 创建 NuGet 包

对于 .NET Standard 和 .NET Core,所有库都应以 NuGet 包方式发布。 实际上,这是所有 .NET 标准库的发布和使用方式。 可以使用 dotnet pack 命令轻松实现此操作。

QQ截图20190121165854.jpg

(完)




上一篇:2019国家公务员考试视频教程
下一篇:visual studio 2017 添加MSDN
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-25 15:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表