.Net Core dotnet发布命令的工作原理

时间:2018-09-20 09:19:25

标签: deployment build .net-core

我有一个针对Net Standard 2.0的项目和针对Netcore 2.1的控制台应用程序的解决方案

我设置为输出文件夹“ myFolder”。 从Visual Studio进行构建,我得到了所有dll:

  • “ myFolder \ netstandard2.0”
  • “ myFolder \ netcoreapp2.1”

使用“ dotnet build”命令可以得到相同的结果。 现在,我需要控制台应用程序的exe文件。 因此,我使用“ dotnet publish -c Release -r win-x64 MySolution.sln”命令。

现在,我得到这个新目录“ myFolder \ netcoreapp2.1 \ win-x64”,在其中可以找到所有dll和控制台应用程序的exe文件。

不够!

我再找到一个目录:“ myFolder \ netcoreapp2.1 \ win-x64 \ publish”,在这里我再次找到所有dll和控制台应用程序的exe文件。

我想知道他们有什么意思。我读了命令documentation,但没有找到答案。

有人照亮我吗?

2 个答案:

答案 0 :(得分:3)

根据文档

  

-o|--output <OUTPUT_DIRECTORY>

     

指定输出目录的路径。如果未指定,则默认为./bin/ [配置] / [框架] / publish /(对于依赖框架的部署),或./bin/ [配置] / [framework] / [runtime] / publish /(对于自定义)包含部署。

dotnet publish -c Release -r win-x64 --output ./MyTargetFolder MySolution.sln

答案 1 :(得分:1)

要成功发布和部署,您真正需要了解的就是您需要dotnet publish并确保您拥有“发布”配置-c Release,以及所有其他必需的选项。命令行。

所有文件都将位于“发布”子文件夹中,例如./bin/Release/ [您的解决方案所针对的框架] /发布。此处包含的文件是运行应用程序/服务的实例所需的一切。 MySolution.dll是您的应用程序/服务的入口点,它将自动链接到发布文件夹中存储的所有其他依赖项和配置。

要配置和部署正在运行的实例,您需要弄清楚如何将所有这些文件部署到服务器,并以某种方式配置某些内容(例如Web服务器,运行时,服务主机...)以调用您的{{ 1}}。

请注意,在您的MySolution.dll中,您指定的是dotnet publish,这意味着您的应用程序旨在在64位Windows上运行,而不是Linux发行版或OSX(这使得它的可移植性较差) ,但具有将您的应用与部署到其上的服务器上已安装的运行时的更改隔离开来的优势。)因此,您会看到一个额外的文件夹-r

此外,您还要根据解决方案文件win-x64指定的解决方案配置进行显式构建,这可能是最可靠的做法,因为这将确保所有项目都被您的解决方案用作依赖项(这是一个典型的良好做法)将包含在构建/发布中。