如果 .NET MVC 应用程序在没有它的情况下运行良好,那么 "building" 的目的是什么?

What is the purpose of "building" a .NET MVC application if it runs fine without it?

我在 .NET Framework 中有一个简单的 MVC Web 应用程序。要 运行 它,我可以单击 Visual Studio 中的绿色箭头("play" 按钮),它会执行 "build" 并启动指向该应用程序的 Web 浏览器。

或者,我可以只使用适当的命令行选项启动 IIS Express,然后在浏览器中导航到 localhost:8080 和 运行 应用程序,而无需 "build"。

"building" Visual Studio 中的应用程序的目的是什么,如果没有它 运行 没问题?

简单的答案是 运行 没有构建步骤;你的假设是错误的。

但是,Visual Studio 会持续监控您的源文件并编译它们,例如能够在您键入时显示智能感知建议和编译器错误。这意味着实际上有基于您的源 某处 编译的二进制文件,也许只是不在您项目根目录下的 bin 文件夹中(某处可能在内存中,或者在磁盘上的一些缓存位置,具体取决于超出此问题范围的情况。

也很可能您之前已经构建了您的应用程序,从而在您的 bin 文件夹中生成了二进制文件,即使您这样做并不是为了 运行 应用程序紧接着。在任何一种情况下,如果你让它与 IIS Express 一起工作,那是因为它可以在某处找到编译的二进制文件,以及 运行 那些。


在您点击播放时 Visual Studio 显式重建您的应用程序的主要原因是确保您 运行 使用最新版本的代码。当然,每次启动调试器都会多花几秒钟,但与您试图追踪已在代码中修复但仍显示在 运行ning 应用程序,因为 运行ning 应用程序是一个过时的版本。 (这也使得诸如单步执行代码之类的事情变得不那么混乱,因为,同样,文件中的源代码将始终与 运行ning 应用程序同步。)