VS中构建和发布的区别?

use*_*762 32 c# visual-studio-2012

我对视觉工作室中构建和发布之间的区别感到有些困惑.

构建程序和发布程序有什么区别?

Ole*_*egI 24

面向.NET Framework应用程序与.NET Core应用程序的生成和发布之间存在一些显着差异:

构建.NET Framework应用程序将生成与发布相同的文件。它将创建所有依赖项作为二进制文件,包括外部依赖项(例如,NuGets)。因此,dotnet构建产品is准备好转移到另一台机器上运行

.NET Core如果项目具有第三方依赖性(例如来自NuGet的库),则在构建应用程序时,将从NuGet缓存中解析它们,并且不适用于项目的生成输出。因此,dotnet构建产品isn't准备好转移到另一台机器上运行。您需要运行发布以将所有第三方依赖项作为二进制文件输出到输出文件夹中。

  • 谢谢@Olegl,我来这里寻找_这个_答案;尝试了解从经典 .NET Framework 到 .NET Core 的过渡。 (3认同)

D S*_*ley 20

Build将源代码编译成(希望)可运行的应用程序.Publish采用该可运行的应用程序并将其放在某个地方供其他人运行.您的困惑可能来自这样一个事实,即Publish也会在认为需要时构建应用程序(例如,如果有源代码更改).

  • "发布"除了复制文件之外还做了什么吗?如配置文件转换? (11认同)
  • 我可以直接构建(编译)并手动将 DLL 文件复制到我的 Web 服务器文件夹中,是一样的吗? (3认同)
  • @Olegl 答案更加最新,并清除了 .NET Core 和 .NET Framework 之间的差异 (2认同)

Ham*_*igh 9

在VS中构建和发布项目是完全不同的事情.在构建过程中,invloves 编译项目的代码和存储二进制结果为DLL文件.您可以在项目根目录下的\ bin\debug\folder或\ bin\release \文件夹下找到它们.这取决于您是在Debug还是Release模式下构建.这些DLL存储应用程序的二进制数据,并可以引用到其他项目中.在出版过程中始终在构建过程之后来到.假设您有一个ASP.NET应用程序.如果要使用项目,将Web应用程序构建为DLL将不够用,因为您需要将Web应用程序托管到将成为IIS或ASP.NET开发服务器的Web服务器中.它会托管您的应用程序以供客户端实体访问.基本上,您可以发布Web应用程序和Web服务.

  • 您将发布与部署混淆了。 (9认同)