.Net Core如何工作dotnet发布命令

Lor*_*ori 3 deployment build .net-core

我有一些针对net标准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文件。

我不知道他们有什么意思。我阅读了命令文档,但没有找到答案。

有人照亮我吗?

Chr*_*row 12

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

\n

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

\n

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

\n

请注意,在您dotnet publish指定的-r,这意味着您的应用程序的目标是在 64 位 Windows 下运行,而不是 Linux 发行版或 OS\xc2\xa0X (这使得它的可移植性较差,但它具有隔离您的应用程序的优点)应用程序对您部署到的服务器上已安装的运行时进行更改。)。这就是为什么您会看到一个额外的文件夹win-x64

\n

此外,您还显式地从解决方案文件指定的解决方案配置进行构建MySolution.sln,这可能是最可靠的事情,因为这将确保解决方案用作依赖项的任何项目(这是典型的良好实践)将包含在构建/发布。

\n

  • 我认为令原发帖者感到困惑(目前也让我感到困惑)的是,发布命令创建了一个包含所有 dll 的文件夹,再加上这三个文件夹(属性、发布、运行时),而内部发布文件夹又包含了所有 dll。这有点令人困惑! (12认同)

wil*_*m18 8

根据文档

-o|--output <OUTPUT_DIRECTORY>

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

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