【发布时间】:2010-02-22 21:24:22
【问题描述】:
我有一个 ASP.NET Web 应用程序,它在 /bin 文件夹“Example.dll”中包含一个 DLL。如果我在 Web.config 中没有提及“Example.dll”,那么简单地将其替换为较新版本的“Example.dll”是否安全,并且应用程序将使用它?
如果没有,需要哪些步骤?
【问题讨论】:
我有一个 ASP.NET Web 应用程序,它在 /bin 文件夹“Example.dll”中包含一个 DLL。如果我在 Web.config 中没有提及“Example.dll”,那么简单地将其替换为较新版本的“Example.dll”是否安全,并且应用程序将使用它?
如果没有,需要哪些步骤?
【问题讨论】:
是的,这很安全(假设您一直很小心并且没有进行任何重大更改),但这是我从痛苦经历中学到的一个技巧:不要在同一文件夹中备份旧版本。即使您将其重命名为 Example.dll0 之类的名称,它仍然可能会混淆框架。
此外,这样做会重新启动应用程序。
【讨论】:
FileLoadException 出现消息“无法加载文件或程序集或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 "事实上,前几天我在尝试替换 DLL 时遇到了这种情况,最终不得不重新部署整个应用程序。我认为这取决于您的部署策略。例如,本例中的应用程序是预编译的。
替换 DLL 将触发 App Domain(整个 Web 应用程序)重新启动,任何使用此 DLL 的代码将在重新启动时使用新版本。当前对旧请求的请求将完成,然后关闭。
因此不需要额外的步骤,只需注意应用程序将重新启动。
【讨论】: