生活在边缘:我可以更改已部署asp.net网站页面dll中的常量字符串吗?

生活在边缘:我可以更改已部署asp.net网站页面dll中的常量字符串吗?,asp.net,deployment,dll,Asp.net,Deployment,Dll,(不幸的是,这个问题是关于一个不推荐的做法。虽然我很感激你建议不要做我在这里要求的事情,但我知道这不是一个好的做法,但我们只是时不时地打开我们的技巧袋;-)) 如果我们无意中发布了一个asp.net网站,但没有可更新性,并且有一个错误的URL,那么我们只需打开该DLL并更改URL,以避免等待下一次发布机会的一周 在老式的原生DLL中,我知道如何更改资源,但如何尝试使用.NET DLL来更改资源?有没有一个简单的方法,或者只有黑客的方法(我知道ildasm和ilasm) 如果重要的话,字符串是事件

(不幸的是,这个问题是关于一个不推荐的做法。虽然我很感激你建议不要做我在这里要求的事情,但我知道这不是一个好的做法,但我们只是时不时地打开我们的技巧袋;-))

如果我们无意中发布了一个asp.net网站,但没有可更新性,并且有一个错误的URL,那么我们只需打开该DLL并更改URL,以避免等待下一次发布机会的一周

在老式的原生DLL中,我知道如何更改资源,但如何尝试使用.NET DLL来更改资源?有没有一个简单的方法,或者只有黑客的方法(我知道
ildasm
ilasm


如果重要的话,字符串是事件处理程序中的一个文本。

以下是一些值得考虑的方法:

  • 具有的反射器能够编辑已编译程序集的IL。但是,如果您使用的是代码签名,那么调整已签名的程序集可能会让您头疼
  • Robocopy是发布可能只有微小更改的网站的有用工具。Robocopy只能复制已修改的文件。我有一些网站需要8个多小时才能发布原始数据,但通过robocopy发布更改所需的时间不到10分钟(而这10分钟对网站来说大多是无中断的)

如果您可以访问DLL以对其进行更改,为什么不能重新发布?如果这只是一个过程,你能解释一下,重新发布比尝试一个具有潜在未知后果的黑客补丁更安全吗?从某种意义上说,改变DLL不就是重新发布吗?在这一点上,我必须同意bgs264。(我知道,我在问题的开头读了你的免责声明。)从运行时的角度来看,编辑DLL和替换DLL没有什么不同。文件已更改,必须重新加载。(像Jon Skeet这样的人可能能够更清楚地了解其中的内部内容。)正确地重新构建DLL并将其交换出去更安全,并且从运行时的角度来看,可以完成同样的事情。@David/@bgs264:我同意,但这些页面还没有使用单页程序集和/或强命名进行发布,因此,仅仅更换不起作用。是的,更改bin目录中的任何内容都将重新加载网站。但我们的应用程序部署要比这复杂得多,在重新加载时让网站很快处于保留状态(需要1分钟)比在网站上设置维护屏幕(通常需要一个小时,只能在周日凌晨4点完成)要好。很长时间忘记了您的答案,对此表示抱歉。您的提示很好,但我最终将我们的过程更改为命名DLL,这使得进行单独更新更加容易。