dotnet构建应用程序部署

时间:2018-01-31 08:42:26

标签: c# build .net-core asp.net-core-webapi

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

  

dotnet构建的产品尚未准备好转移到另一个产品   机器运行。这与.NET的行为形成对比   构建可执行项目(应用程序)的框架   生成可在任何.NET机器上运行的输出   框架已安装。

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

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

1 个答案:

答案 0 :(得分:3)

TL;博士

dotnet publish会做你想做的事情

dotnet publish command将完成您的应用程序的完整包,准备在UAT或生产环境中运行。

请注意

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

publish命令有几个可能的参数,这些参数取决于您希望如何托管您的应用程序。例如,--self-contained会将相关的.NET Core运行时打包到您的应用程序中,以便可以将其推送到服务器""无需安装运行时。

-r|--runtime <RUNTIME_IDENTIFIER>也很有用。文档(之前链接)以下列方式解释

  

发布给定运行时的应用程序。在创建self-contained deployment (SCD)时使用此选项。有关运行时标识符(RID)的列表,请参阅RID catalog。默认是发布framework-dependent deployment (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 Application Deployment。有关已发布应用程序的目录结构,请参阅Directory structure