无法使用"在发布期间预编译"选项

时间:2015-11-04 10:19:05

标签: c# .net visual-studio-2015

我正在尝试发布我的网络应用。

以下是我的发布资料设置的图片: enter image description here

正如您所看到的,我在发布期间有#34;预编译"选项已选中。

以下是"发布期间预编译"的配置设置。 enter image description here

选中此项后,我尝试发布我的网络应用,我的某个网页上出现错误。当我将鼠标悬停在标签上以查看文件位置时,位置位于: C:\ Users \ akemp.WT \ AppData \ Local \ Temp \ WebSitePublish ... 这不是我的源代码的位置,如果我在本地页面上进行更改,则上述给定路径中的站点不会更新。

当我在发布期间取消选中"预编译"选项,我的网站发布没有任何麻烦。

这里发生了什么?

2 个答案:

答案 0 :(得分:1)

预编译意味着所有源代码(包括用于网站项目的aspx.cs文件,app_code文件夹下的类文件,resx文件,global.asax文件,甚至aspx文件 - 除非“允许预编译的站点为可更新的“被选中”被组合并编译成程序集。

global.asax将拥有它自己的程序集,app_code将拥有它自己的,resx文件将在每个文件夹的程序集中编译,而其余的源代码(aspx,aspx.cs)将被编译为单个(和巨大的,取决于页数)程序集,所有都将作为dll文件在Web应用程序的bin文件夹中。

如果您不进行预编译,则会使用针对该页面的第一个请求编译这些资源(例如,aspx文件)。

这将使您能够在不回收应用程序的情况下进行aspx和aspx.cs部署。

由于网站既可以预编译,也可以按需编译,因此VS无法运行源代码所在的已发布网站。但是如果你没有预编译,你的源代码可以直接提供(因为第一个请求将编译资源,编译的程序集将在C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP下) .NET文件(或阴影程序集的另一个显式设置临时路径)

答案 1 :(得分:1)

当我尝试在发布时使用"预编译"检查选项,我的一个代码后面的文件出错了。

当我在visual studio中对我的代码进行更改,保存并重建我的解决方案,然后尝试发布时,问题仍然存在。当我双击错误列表中的错误时,它打开了我的页面代码隐藏文件,除了它是位于" C:\ Users \ akemp.WT \ AppData \的文件这一事实Local \ Temp \ WebSitePublish ... \ RandomPage.aspx.cs",而不是位于我的源文件夹。

在我自己单独发布该页面后(右键单击RandomPage.aspx.cs,然后选择Publish RandomPage.aspx.cs),我能够使用"发布我的Web应用程序。在发布期间预编译"选项已选中。