1

我了解引用存储在 ASP.NET Web 应用程序和 Web.Config 的项目 (vbproj) 文件中(http://msdn.microsoft.com/en-us/library/37e2zyhb%28v=vs.71%29 .aspx ) 用于网站。

我最近将网站转换为 Web 应用程序。我现在注意到,即使 Web.Config 中的版本信息不正确,Web 应用程序也会发布(使用 Publish 选项),然后通过浏览器访问 Web 应用程序时出现错误。

如果 Web.Config 中的程序集版本不正确,我无法发布网站。

我读到网络应用程序是预编译的(在发布之前),而网站是在第一次通过浏览器访问网站时编译的。

因此,我相信我所说的应该是相反的,即我应该能够在 Web.Config 中发布具有不正确版本的网站(因为它们没有被编译)并且我不应该能够发布 Web 应用程序。

我错过了什么?

4

1 回答 1

0

经过进一步研究;我发现 ASP.NET Web 应用程序是使用 MSBuild 构建的,而 ASP.NET 网站是使用 ASPnet_Compiler 构建的。ASPnet_Compiler 在构建时在 Web.Config 中查找引用的程序集(添加程序集标记),而 MSBuild 在构建时在项目文件 (vbproj) 中查找。

Web 应用程序在没有 vbproj 的情况下部署。我相信项目文件用于链接。因此,在运行时,Web 应用程序使用 Web.Config 中的信息来识别要在本地 bin 文件夹中查找的程序集,然后 GAC(仅适用于 aspx 页面)即命名空间仍然必须手动导入到部分类后面的代码中。

如果有人有任何意见或更好的答案,请发表。

于 2013-03-12T12:41:01.333 回答