我们有一个.net核心Web应用程序,我们正在构建一个自动部署过程。从我在this site上看到的内容,我看到了:
dotnet构建的产品尚未准备好转移到另一个产品 机器运行。这与.NET的行为形成对比 构建可执行项目(应用程序)的框架 生成可在任何.NET机器上运行的输出 框架已安装。
因此,如果我在目标计算机上安装了.net核心运行时,是否可以使用build命令的输出?因为使用此命令,输出不包含额外的文件夹(本地化dll,运行时文件夹等)...
此外,是否有一个参数可以与dotnet build命令一起使用,以便在输出文件夹中只有MyStartupProject.runtimeconfig.json而不是所有的runtimeconfig.json文件(来自所有项目以及runtimeconfig的版本)。 dev.json)?
答案 0 :(得分:3)
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
开关,提供Debug
或Release
- 最好是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。