关注爱学习公众号
扫码手机阅读更方便
本文内容 本快速入门介绍如何创建第一个 ASP.NET Core Web 应用并将其部署到 Azure 应用服务。完成后,你将获得一个 Azure 资源组,其中包含一个应用服务托管计划,以及一个部署了 Web 应用程序的
备注 自版本 2.x 起,xUnit 已删除 SetUp 和 TearDown
本文内容 本文介绍如何检查计算机上安装的 .NET Core 运行时和 SDK 的版本。 如果你拥有一个集成开发环境(如 Visual Studio 或 Visual Studio for Mac),则可能已安装 .NET core。安装 SDK 便会安装相应
本文内容 作者:Daniel Roth、Rick Anderson 和 Shaun LuttinASP.NET Core 是一个跨平台的高性能开源框架,用于生成启用云且连接 Internet 的新式应用。 使用 ASP.NET Core,您可以:生成 W
本文内容 本文适用于: ✔️ .NET Core 2.1 SDK 及更高版本.NET Core 命令行接口 (CLI) 工具是用于开发、生成、运行和发布 .NET Core 应用程序的跨平台工具链。.NET Core CLI 包含在 .NET Core S
备注 “开发”映像不包含应用程序二进制文件和其他内容,因为“调试”配置使用卷装载提供迭代编辑和调试体验 。 若要创建包含所有内容的生产映像,请使用“版本”配置 。
本文内容 本教程演示如何生成包含单元测试项目和源代码项目的解决方案。 若要使用预构建解决方案学习本教程,请查看或下载示例代码。 有关下载说明,请参阅示例和教程。创建解决方案在本部分中,将创建包含源和测试项目的解决方案。 已完成的解决方案具有以下目录结构:/
备注 ARM64 尚未提供 Windows 支持。
本文内容 你可能有些代码当前正在 .NET Framework 上运行,但你想将这些代码移植到 .NET Core。 本文提供以下内容:移植过程概述。在将代码移植到 .NET Core 时,可能会发现一系列有用的工具。移植过程概述针对多个项目从 .N
备注 + 表示最低版本。
本文适用于: ?? .NET Core 2.1 SDK 及更高版本
dotnet publish
- 将应用程序及其依赖项发布到文件夹以部署到托管系统。
dotnet publish [<PROJECT>|<SOLUTION>] [-c|--configuration <CONFIGURATION>]
[-f|--framework <FRAMEWORK>] [--force] [--interactive]
[--manifest <PATH_TO_MANIFEST_FILE>] [--no-build] [--no-dependencies]
[--no-restore] [--nologo] [-o|--output <OUTPUT_DIRECTORY>]
[-p:PublishReadyToRun=true] [-p:PublishSingleFile=true] [-p:PublishTrimmed=true]
[-r|--runtime <RUNTIME_IDENTIFIER>] [--self-contained [true|false]]
[--no-self-contained] [-v|--verbosity <LEVEL>]
[--version-suffix <VERSION_SUFFIX>]
dotnet publish -h|--help
dotnet publish
编译应用程序、读取 project 文件中指定的所有依赖项并将生成的文件集发布到目录。 输出包括以下资产:
dotnet publish
命令的输出可供部署至托管系统(例如服务器、电脑、Mac、笔记本电脑)以便执行。 若要准备用于部署的应用程序,这是唯一正式受支持的方法。 根据项目指定的部署的类型,托管系统不一定已在其上安装 .NET Core 共享运行时。 有关详细信息,请参阅使用 .NET Core CLI 发布 .NET Core 应用。
无需运行 dotnet restore
,因为它由所有需要还原的命令隐式运行,如 dotnet new
、dotnet build
、dotnet run
、dotnet test
、dotnet publish
和 dotnet pack
。 若要禁用隐式还原,请使用 --no-restore
选项。
在执行显式还原有意义的某些情况下,例如 Azure DevOps Services 中的持续集成生成中,或在需要显式控制还原发生时间的生成系统中,dotnet restore
命令仍然有用。
有关如何使用 NuGet 源的信息,请参阅 dotnet restore
文档。
dotnet publish
命令调用 MSBuild,后者会调用 Publish
目标。 任何传递给 dotnet publish
的参数都将传递给 MSBuild。 -c
和 -o
参数分别映射到 MSBuild 的 Configuration
和 PublishDir
属性。
dotnet publish
命令接受 MSBuild 选项,如用来设置属性的 -p
和用来定义记录器的 -l
。 例如,可以使用以下格式设置 MSBuild 属性:-p:<NAME>=<VALUE>
。 还可以通过引用 .pubxml 文件来设置与发布相关的属性,例如:
dotnet publish -p:PublishProfile=Properties\PublishProfiles\FolderProfile.pubxml
有关更多信息,请参见以下资源:
PROJECT|SOLUTION
要发布的项目或解决方案。
PROJECT
是 C#、F# 或 Visual Basic 项目文件的路径和文件名,或包含 C#、F# 或 Visual Basic 项目文件的目录的路径。 如果未指定目录,则默认为当前目录。
SOLUTION
是解决方案文件(扩展名为 .sln)的路径和文件名,或包含解决方案文件的目录的路径。 如果未指定目录,则默认为当前目录。 自 .NET Core 3.0 SDK 起可用。
-c|--configuration <CONFIGURATION>
定义生成配置。 大多数项目的默认配置为 Debug
,但你可以覆盖项目中的生成配置设置。
-f|--framework <FRAMEWORK>
为指定的目标框架发布应用程序。 必须在项目文件中指定目标框架。
--force
强制解析所有依赖项,即使上次还原已成功,也不例外。 指定此标记等同于删除 project.assets.json 文件。
-h|--help
打印出有关命令的简短帮助。
--interactive
允许命令停止并等待用户输入或操作。 例如,完成身份验证。 自 .NET Core 3.0 SDK 起可用。
--manifest <PATH_TO_MANIFEST_FILE>
指定一个或多个目标清单,用于剪裁与应用程序一同发布的一组包。 清单文件是 dotnet store
命令输出的一部分。 若要指定多个清单,请为每个清单添加一个 --manifest
选项。
--no-build
发布前不生成项目。 还将隐式设置 --no-restore
标记。
--no-dependencies
忽略项目间引用,仅还原根项目。
--nologo
不显示启动版权标志或版权消息。 自 .NET Core 3.0 SDK 起可用。
--no-restore
运行此命令时不执行隐式还原。
-o|--output <OUTPUT_DIRECTORY>
指定输出目录的路径。
如果未指定,则默认为依赖于运行时的可执行文件和跨平台二进制文件的路径 [project_file_folder]./bin/[configuration]/[framework]/publish/。 默认为独立的可执行文件路径 [project_file_folder]/bin/[configuration]/[framework]/[runtime]/publish/。
在 Web 项目中,如果输出文件夹位于项目文件夹,则连续的 dotnet publish
命令将产生嵌套的输出文件夹。 例如,如果项目文件夹是“myproject”,发布输出文件夹是“myproject/publish”,并且运行 dotnet publish
两次,则第二次运行会将“.config”和“.json”等内容文件放入“myproject/publish/publish” 。 若要避免嵌套发布文件夹,请指定一个不在项目文件夹正下方的发布文件夹,或从项目中排除发布文件夹。 若要排除名为“publishoutput”的发布文件夹,请将以下元素添加到“.csproj”文件中的 PropertyGroup
元素中 :
<DefaultItemExcludes>$(DefaultItemExcludes);publishoutput**</DefaultItemExcludes>
.NET Core 3.x SDK 和更高版本
如果在发布项目时指定了相对路径,则生成的输出目录相对于当前工作目录,而不是项目文件位置。
如果在发布解决方案时指定了相对路径,则所有项目的所有输出都会进入相对于当前工作目录的指定文件夹中。 若要使发布输出进入每个项目的单独文件夹,请使用 msbuild PublishDir
属性(而不是 --output
选项)指定相对路径。 例如,dotnet publish -p:PublishDir=.\publish
将每个项目的发布输出发送到包含项目文件的文件夹下的 publish
文件夹中。
.NET Core 2.x SDK
如果在发布项目时指定了相对路径,则生成的输出目录相对于项目文件位置,而不是当前工作目录。
如果在发布解决方案时指定了相对路径,则每个项目的输出会进入相对于项目文件位置的单独文件夹中。 如果在发布解决方案时指定了绝对路径,则所有项目的所有发布输出都会进入指定文件夹中。
-p:PublishReadyToRun=true
以 ReadyToRun (R2R) 格式编译应用程序集。 R2R 是一种预先 (AOT) 编译形式。 有关详细信息,请参阅 ReadyToRun 图像。 自 .NET Core 3.0 SDK 起可用。
建议在发布配置文件中而不是在命令行中指定此选项。 有关详细信息,请参阅 MSBuild。
-p:PublishSingleFile=true
将应用打包到特定于平台的单个文件可执行文件中。 该可执行文件是自解压缩文件,包含运行应用所需的所有依赖项(包括本机依赖项)。 首次运行应用时,应用程序将根据应用名称和生成标识符自解压缩到一个目录中。 再次运行应用程序时,启动速度将变快。 除非使用了新版本,否则应用程序无需再次进行自解压缩。 自 .NET Core 3.0 SDK 起可用。
有关单文件发布的详细信息,请参阅单文件捆绑程序设计文档。
建议在发布配置文件中而不是在命令行中指定此选项。 有关详细信息,请参阅 MSBuild。
-p:PublishTrimmed=true
在发布自包含的可执行文件时,剪裁未使用的库以减小应用的部署大小。 有关详细信息,请参阅剪裁自包含部署和可执行文件。 自 .NET Core 3.0 SDK 起可用。
建议在发布配置文件中而不是在命令行中指定此选项。 有关详细信息,请参阅 MSBuild。
--self-contained [true|false]
与应用程序一同发布 .NET Core 运行时,因此无需在目标计算机上安装运行时。 如果指定了运行时标识符,并且项目是可执行项目(而不是库项目),则默认值为 true
。 有关详细信息,请参阅 .NET Core 应用程序发布和使用 .NET Core CLI 发布 .NET Core 应用。
如果在未指定 true
或 false
的情况下使用此选项,则默认值为 true
。 在这种情况下,请不要紧接在 --self-contained
后放置解决方案或项目参数,因为该位置需要 true
或 false
。
--no-self-contained
等效于 --self-contained false
。 自 .NET Core 3.0 SDK 起可用。
-r|--runtime <RUNTIME_IDENTIFIER>
发布针对给定运行时的应用程序。 有关运行时标识符 (RID) 的列表,请参阅 RID 目录。 有关详细信息,请参阅 .NET Core 应用程序发布和使用 .NET Core CLI 发布 .NET Core 应用。
-v|--verbosity <LEVEL>
设置命令的详细级别。 允许使用的值为 q[uiet]
、m[inimal]
、n[ormal]
、d[etailed]
和 diag[nostic]
。 默认值是 minimal
。
--version-suffix <VERSION_SUFFIX>
定义版本后缀来替换项目文件的版本字段中的星号 (*
)。
为当前目录中的项目创建一个 依赖于运行时的跨平台二进制文件:
dotnet publish
自 .NET Core 3.0 SDK 起,此示例还为当前平台创建依赖于运行时的可执行文件。
针对特定运行时,为当前目录中的项目创建独立可执行文件:
dotnet publish --runtime osx.10.11-x64
项目文件中必须包含 RID。
针对特定平台,为当前目录中的项目创建依赖于运行时的可执行文件:
dotnet publish --runtime osx.10.11-x64 --self-contained false
项目文件中必须包含 RID。 此示例适用于 .NET Core 3.0 SDK 及更高版本。
针对特定运行时和目标框架,在当前目录中发布项目:
dotnet publish --framework netcoreapp3.1 --runtime osx.10.11-x64
发布指定的项目文件:
dotnet publish ~/projects/app1/app1.csproj
发布当前应用程序,但在还原操作期间不还原项目到项目 (P2P) 引用,只还原根项目:
dotnet publish --no-dependencies