为什么dotnet发布会创建相同文件的2个副本?

时间:2018-04-20 10:32:04

标签: .net-core

我问here如何创建一个在Windows上运行的.exe并学习命令

$admins = $this->xxx->find()
    ->select($fields)
    ->where($conditions)
    ->contain([
        'yyy' => function ($q) {   
            return $q->autoFields(false)
                ->select(['id','name','login_url','priority']);
            }
    ])
    ->order(['yyy.priority' => 'ASC'])
    ->all();

这在\ bin \ Release \ netcoreapp2.0 \ win-x64文件夹中创建了文件 以及一个名为publish的子文件夹,其中包含相同文件的副本。

为什么要创建重复文件? (在Win-x64文件夹和发布文件夹中)

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:4)

dotnet publish在将二进制文件复制到输出目录之前构建项目。您在bin\Release\netcoreapp2.0\win-x64目录中看到的文件是dotnet build命令的结果。您可以通过运行以下命令来检查它:

  

dotnet build --configuration Release --runtime win-x64

您将看到与运行dotnet publish --configuration Release --runtime win-x64完全相同的文件。

然后,将构建阶段提供的输出二进制文件与所需的依赖项一起复制到发布目录。您可能希望立即构建二进制文件以发布目录,而无需将它们从构建目录复制到发布。嗯,这是一个公平的假设。但是它会损害不同阶段的分离 - 构建和发布。此外,就目前硬盘资源非常便宜而言,它应该不是一个大问题。