Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法使用“部署网站”;“发布期间预编译”;选项_C#_.net_Visual Studio 2015 - Fatal编程技术网

C# 无法使用“部署网站”;“发布期间预编译”;选项

C# 无法使用“部署网站”;“发布期间预编译”;选项,c#,.net,visual-studio-2015,C#,.net,Visual Studio 2015,我正在尝试发布我的web应用程序 以下是我的发布配置文件设置的图片: 如您所见,我选中了“发布期间预编译”选项 以下是“发布期间预编译”的配置设置。 如果选中此选项,并且我尝试发布我的web应用程序,则我的一个页面上会出现错误。当我将鼠标悬停在选项卡上查看文件位置时,该位置位于:C:\Users\akemp.WT\AppData\Local\Temp\WebSitePublish…这不是我源代码的位置,如果我在本地页面上进行更改,则上述给定路径中的站点不会得到更新 当我取消选中“发布期间预编

我正在尝试发布我的web应用程序

以下是我的发布配置文件设置的图片:

如您所见,我选中了“发布期间预编译”选项

以下是“发布期间预编译”的配置设置。

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

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


这里发生了什么?

预编译意味着您的所有源代码(包括网站项目的aspx.cs文件、app_code文件夹下的类文件、resx文件、global.asax文件,甚至aspx文件,除非选择了“允许预编译的站点可更新”)都被合并并编译到程序集中

global.asax将有它自己的程序集,app_代码将有它自己的程序集,resx文件将在每个文件夹的程序集中编译,而其余的源代码(aspx,aspx.cs)将编译成一个单独的(巨大的,取决于页数)程序集,并且所有的都将作为dll文件放在web应用程序的bin文件夹中

如果不进行预编译,这些资源(例如aspx文件)将在第一个请求针对该页面时进行编译

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


而且,由于网站不能同时进行预编译和按需编译,VS无法在源代码所在的位置运行已发布的网站。但是,如果不预编译,则可以直接提供源代码(因为第一个请求将编译资源,编译后的程序集将位于C:\Windows\Microsoft.NET\Framework64\v4.0.30319\临时ASP.NET文件(或另一个显式设置的卷影程序集临时路径)

下,当我尝试使用选中“发布期间预编译”选项后,我的一个代码隐藏文件出现错误

当我在visual studio中更改我的代码隐藏文件,保存并重新生成解决方案,然后尝试发布时,问题仍然存在。当我双击错误列表中的错误时,它打开了我页面的代码隐藏文件,但该文件位于“C:\Users\akemp.WT\AppData\Local\Temp\WebSitePublish…\RandomPage.aspx.cs”,不在我的源文件夹中


在我单独发布了该页面之后(右键单击RandomPage.aspx.cs,然后选择Publish RandomPage.aspx.cs),我可以使用“发布期间预编译”来发布我的web应用程序“选项已选中。

当您在该屏幕上按“配置”时,您会得到哪些选项?@RussClarke我已更新了我的原始帖子,添加了配置屏幕的一个片段。我了解该部分。是的,对不起,我的标题可能有误导性。为什么它试图发布位于该屏幕上的网站“C:\…\AppData\Local\Temp\WebSitePublish\…”,当我取消选中“发布期间预编译”选项时,没有发生这种情况?因为网站不能同时进行预编译和按需编译。它无法在源代码所在的已发布网站上运行。但如果不进行预编译,则可以直接提供源代码(由于第一个请求将编译资源,并且编译的程序集将位于C:\Windows\Microsoft.NET\Framework64\v4.0.30319\临时ASP.NET文件(或另一个为卷影程序集显式设置的临时路径)下,因此我想我的最后一个问题是,如何获取位于“C:\…\AppData\Local\temp\WebSitePublish\”中的文件。。。要更新到我的最新源文件?无论我在Visual Studio中对源文件做了什么更改,似乎都不会更新位于“C:\…\AppData\Local\Temp\WebSitePublish\…”中的文件将需要另一次发布。抱歉。这就是为什么我们在开发期间从不发布。是的,你是对的。但是在发布之前,它会生成你的网站,然后将所有文件复制到此临时位置,然后仅发布。这是我的网站的生成输出-----将所有文件复制到下面的临时位置以进行打包/发布:C:\Users\OOZGUL\AppData\Local\Temp\WebSitePublish\WebSite1--10011..C:\Users\OOZGUL\AppData\Local\Temp\WebSitePublish\WebSite1--1001.将所有文件复制到下面的临时位置进行打包/发布:C:\Users\OOZGUL\AppData\Local\Temp\WebSitePublish\…删除现有文件…发布文件夹/…发布文件夹箱。。。