【问题标题】:The difference between build and publish in VS?VS中构建和发布的区别?
【发布时间】:2021-08-25 21:38:56
【问题描述】:

我对 Visual Studio 中构建和发布之间的区别有点困惑。

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

【问题讨论】:

  • @Habib 该链接没有提到构建应用程序,只是发布。
  • @KyleDelaney 以及提供问题答案的数千个其他页面,其中许多将提供有关该主题的更多更好的信息。多加一个也没用。
  • 也许你可以发布一个链接到最好的,那么。

标签: c# visual-studio-2012


【解决方案1】:

针对 .NET Framework 应用程序与 .NET Core 应用程序的构建和发布之间存在一些显着差异:

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

构建 .NET Core 应用程序时,如果项目具有第三方依赖项,例如来自 NuGet 的库,它们会从 NuGet 缓存中解析,并且不适用于项目的构建输出。因此dotnet build 的产品还没有准备好转移到另一台机器上运行。您需要运行 Publish 以在输出文件夹中获取所有 3rd 方依赖项作为二进制文件。

【讨论】:

  • 谢谢@Olegl,我来这里是为了寻找this的答案;试图了解从经典 .NET Framework 到 .NET Core 的过渡。
  • @nqramjets 有很多不同之处,抱歉我无法在这里重复所有这些。根据应用程序转换的复杂性可能会有很大的不同:) 但如果你有机会迁移,我肯定会这样做
  • 我在使用 .NET Core 进行测试期间发现的一个潜在重要发现是,在 Visual Studio 中运行和调试程序时,会使用 bin 文件夹。因此,您应该允许将本地开发人员设置复制到 bin 文件夹(如果您有此类文件),但可能希望将它们排除在发布之外(请参阅stackoverflow.com/a/42503825/397817 了解如何)。
  • 我认为这不是一个好的答案,尤其是 dotnet 框架部分说 Build 和 Publish 生成相同的东西。在 VS2019 中,对于 aspdotnet 应用程序,发布 IIS 部署肯定需要。
【解决方案2】:

Build 将源代码编译成(希望是)可运行的应用程序。 Publish 获取构建的结果以及任何需要的第三方库,并将其放在某个地方供其他人运行。它还可能会进行一些更改以使应用程序在目标中可运行,具体取决于应用程序的框架和类型(例如,控制台应用程序可能只是复制文件,而 Web 应用程序可能会根据目标设置配置)。

您的困惑可能来自 Publish 认为它需要时也会构建应用程序(例如,如果有源代码更改)。

【讨论】:

  • “发布”除了复制文件还有其他作用吗?比如配置文件转换?
  • 我可以直接构建(编译)DLL文件并将其手动复制到我的Web服务器文件夹中吗?是一样的吗?
  • @Olegl 的答案是最新的,并且清除了 .NET Core 和 .NET Framework 之间的区别
【解决方案3】:

在 VS 中构建和发布项目是完全不同的事情。

构建 过程涉及编译您的项目代码并将二进制结果存储到 DLL 中。您可以在项目根目录下的 \bin\debug\ 文件夹或 \bin\release\ 文件夹下找到它们。这取决于您是在调试还是发布模式下构建。这些 DLL 存储应用程序的二进制数据,并可被其他项目引用。

发布过程总是在构建过程之后。假设您有一个 ASP.NET 应用程序。如果您想使用您的项目,将您的 Web 应用程序构建到 DLL 中是不够的,因为您需要将您的 Web 应用程序托管到一个 Web 服务器中,该服务器将是 IIS 或 ASP.NET 开发服务器。它涉及托管您的应用程序以供客户端实体访问。基本上,您可以发布 Web 应用程序和 Web 服务。

【讨论】:

  • @HamdiBaligh 是的,但是您需要确保复制任何未安装在服务器上的 GAC 中的依赖项。
  • 我们过去总是通过复制bin 文件夹来部署到 IIS,所以自从发明了 Publish 之后,这是否被打破了?
  • 您将发布与部署混淆了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 2018-06-17
  • 2020-03-07
  • 2011-04-30
相关资源
最近更新 更多