7

我正在使用带有新网站发布对话框的 Visual Studio 2010。我有一个 Web 应用程序网站。发布时,理论上它应该将所有代码编译成一个程序集。但是,在DebugRelease中,发布后的目录总是包含页面和用户控件的源代码(即使使用未转换的 web.config 文件 Web.Debug.config 和 Web.Release.Config)。这非常令人困惑。

但是通过package/publish web项目配置和Generate Deploy package上下文菜单项,Package\PackageTmp 目录是干净的。

  • 为什么 Visual Studio 不使用这个包来发布网站?
  • 预编译选项在哪里?
  • Web.config xml 转换好像不行,为什么Visual Studio 会带来这个功能来迷惑我?
4

3 回答 3

11

正确的答案是查看打包/发布 Web 设置(在 Web 应用程序项目属性中)并查找“要部署的项目”。

在此处输入图像描述

对于 Web 应用程序,您希望“要部署的项目”具有“仅运行此应用程序所需的文件”,这不会复制源代码文件,因为它们已被编译到 bin 文件夹中的 DLL 中。

请注意,此设置因您当前的构建类型(调试/发布/等)而异,因此请相应地计划......

再见!

于 2012-02-05T22:21:57.103 回答
2

您需要了解Web 应用程序项目与网站项目之间的区别。

若要部署 Web 应用程序项目,请将通过编译项目创建的程序集复制到 IIS 服务器。相反,要部署网站项目,您通常会将项目源文件复制到 IIS 服务器。

对于 Web 应用程序项目,您通常在 Visual Studio 中构建项目,或者在不是生产 IIS 服务器的计算机上使用 ASP.NET 批处理编译器。项目中的所有代码隐藏类文件和独立类文件都编译成一个程序集,然后将其放入 Web 应用程序项目的 Bin 文件夹中。(.aspx 和 .ascx 文件以类似于为网站项目所做的方式动态编译。)

对于网站项目,您不必手动编译该项目。Web 站点项目通常由 ASP.NET 动态编译(在开发计算机和生产 IIS 服务器上)。您可以在批量编译模式(通常为每个文件夹生成一个程序集)和固定编译模式(通常为每个页面或用户控件生成一个程序集)之间进行选择。

于 2011-12-26T04:14:19.457 回答
0

在 Visual Studio 2013/2015 中,选择“发布期间预编译”选项在此处输入图像描述

于 2016-06-16T19:11:45.690 回答