【问题标题】:Cannot deploy website using "Precompile during publishing" option无法使用“发布期间预编译”选项部署网站
【发布时间】:2015-11-04 20:25:20
【问题描述】:

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

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

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

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

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

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

这是怎么回事?

【问题讨论】:

  • 在该屏幕上按“配置”时会出现哪些选项?
  • @RussClarke 我已经更新了我的原始帖子以包含配置屏幕的 sn-p。

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


【解决方案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 文件(或其他显式设置的影子程序集临时路径)

【讨论】:

  • 我明白那部分是的,抱歉,我的标题可能具有误导性。为什么它试图发布位于“C:\...\AppData\Local\Temp\WebSitePublish\...”中的网站,当我取消选中“发布期间预编译”选项时,这没有发生?
  • 因为,一个网站不能同时预编译和按需编译。它无法运行您的源代码所在的已发布网站。但是如果你不预编译,你的源代码可以直接提供(因为第一个请求将编译资源,编译的程序集将放在 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary 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\... 正在删除现有文件... 发布文件夹 /... 发布文件夹 bin...跨度>
【解决方案2】:

当我尝试在选中“发布期间预编译”选项的情况下发布时,我的一个代码隐藏文件出现错误。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多