dotnet 构建应用程序部署

Bud*_*ril 7 c# build .net-core asp.net-core-webapi

我们有一个 .net 核心 Web 应用程序,我们正在构建一个自动部署过程。从我在这个网站上读到的,我看到了:

dotnet build 的产品还没有准备好转移到另一台机器上运行。这与 .NET Framework 的行为形成对比,在该行为中,构建可执行项目(应用程序)会生成可在安装了 .NET Framework 的任何计算机上运行的输出。

因此,如果我在目标机器上安装了 .net core 运行时,是否可以使用 build 命令的输出?因为使用此命令,输出不包含额外的文件夹(本地化 dll、运行时文件夹等)...

另外,是否有一个参数可以与 dotnet build 命令一起使用,以便在输出文件夹中只有 MyStartupProject.runtimeconfig.json 而不是所有 runtimeconfig.json 文件(来自所有项目以及 runtimeconfig.dev.json 的版本) )?

Jam*_*lor 7

tl;博士

dotnet publish 会做你想做的


dotnet publish命令将对您的应用程序进行完整打包,准备好在 UAT 或生产环境中运行。

请注意

上一段中的链接是 .NET Core 2.x,但是 .NET Core 1.x 的过程非常相似。链接页面在一系列选项卡中包含 .NET Core 1.x 和 2.x 的说明。

发布命令有几个可能的参数,这些将取决于您希望如何托管您的应用程序。例如,--self-contained将相关的 .NET Core 运行时与您的应用程序打包在一起,以便它可以“按原样”推送到服务器,而无需安装运行时。

-r|--runtime <RUNTIME_IDENTIFIER>可能是有用的,太。文档(之前链接)以下列方式解释它

发布给定运行时的应用程序。这在创建独立部署 (SCD) 时使用。有关运行时标识符 (RID) 的列表,请参阅RID 目录。默认是发布依赖框架的部署 (FDD)

您还需要考虑使用--configuration开关,提供DebugRelease- 最好是Release. 这基本上与在 Visual Studio 中的 Debug 或 Release 中构建相同,除了这将在发布操作之前发生。

以下是dotnet publish官方文档中对命令的描述:

dotnet publish 编译应用程序,读取其在项目文件中指定的依赖项,并将生成的文件集发布到目录。输出将包含以下内容:

  • 具有 dll 扩展名的程序集中的中间语言 (IL) 代码。
  • .deps.json 文件,包含项目的所有依赖项。
  • .runtime.config.json 文件,指定应用程序期望的共享运行时,以及运行时的其他配置选项(例如,垃圾收集类型)。

应用程序的依赖项。这些内容从 NuGet 缓存复制到输出文件夹中。

dotnet publish 命令的输出已准备好部署到托管系统(例如,服务器、PC、Mac、笔记本电脑)以供执行,并且是为部署准备应用程序的唯一官方支持的方式。根据项目指定的部署类型,托管系统可能安装也可能没有安装 .NET Core 共享运行时。有关详细信息,请参阅.NET Core 应用程序部署。有关已发布应用程序的目录结构,请参阅目录结构