ASP.NET:预编译文件的文件名生成规则

标签 asp.net

在预编译了一个 ASP.NET 网站后,我得到了许多名称如下的文件

App_Web_accountbalance.aspx。 dfa151d5 .dll

你知道上面随机字符(粗体)的规则吗?

我们可以修复随机字符吗?

修复它的原因是如果我们稍后修改AccountBalance.aspx文件并重新编译网站,我们是否可以只替换App_Web_accountbalance.aspx.dfa151d5.dll。

谢谢你。

最佳答案

字符不是随机的,而是更符合散列。目的是使文件名在bin文件夹中是唯一的。虽然不可取,但您可以仅替换某些文件来更新您的网站。如果修改AccountBalance.aspx 并重新编译,则需要替换App_Web_accountbalance.aspx.dfa151d5.dll、accountbalance.aspx.dfa151d5.compiled 以及您的aspx 文件所依赖的其他程序集和文件。

我从我的经验中得出了答案。我不是在寻找文件命名规则,而是一种仅部署已更改页面的程序集的方法,与原始帖子的原因相同。

设置:

一个 Web 应用程序,部署为不可更新(在 PrecompileApp.config 中可更新=“false”),预编译的程序集没有固定名称

我做了什么:

  • 对开发中的页面(例如 a.aspx)进行更改 (Visual Studio 2010)
  • 将具有固定命名的站点发布到本地驱动器(构建 > 发布网站,选中复选框:使用固定命名和单页程序集)
  • 转到本地发布站点的 bin 文件夹,查找 a.aspx.xxx.compiled
  • 用记事本打开文件并记下任何依赖项(例如 b.aspx、c.master)
  • 将所有受影响的程序集和 .compiled 文件复制到生产服务器的 bin 文件夹中。在这个例子中,它们是:
  • a.aspx.xxx.compiled
  • b.aspx.xxx.compiled
  • c.master.xxx.compiled
  • App_Web_a.aspx.xxx.dll
  • App_Web_b.aspx.xxx.dll
  • App_Web_c.master.xxx.dll

  • 如果你想知道我的故事,这个变化是由于计算中的一个因素发生了变化。客户很早就知道了这一变化,但直到它变得紧急才让我们知道。适当的部署会涉及其他各方和很多协调,为时已晚。另外,我只有两个版本的源代码,请求最新版本需要时间。因此,作为临时措施,需要针对该计算更改进行热修复。

    关于ASP.NET:预编译文件的文件名生成规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3298023/

    相关文章:

    c# - ASP.NET 请求验证程序允许的脚本

    c# - Path.GetFullPath 不返回正确的路径

    c# - 如何在少数页面上禁用缓存,以避免重复提交表单

    asp.net - 未找到 WebResource.axd

    c# - SQL session 状态 : some fields become null

    c# - 是否可以有一个可用于模型绑定(bind)的非公共(public)无参数构造函数?

    asp.net - SelectPdf .net 的安全异常

    asp.net - 为什么图像在部署在本地 IIS 上的 ASP.NET 中处理不当

    javascript - MVC 3 ValidationMessageFor() 没有出现

    Azure Windows Server 2016 上的 ASP.NET5 CLR 网站正在运行,但在浏览器中出现 404 NOT FOUND