我有第三方工作流软件(Captaris Teamplate),它从我的项目中引用一个程序集,它通过GAC从我们的项目解决方案中引用其他程序集。
当我们的应用程序执行时,它会调用 Captaris Teamplate 方法来创建一个工作流过程,该过程又使用 GAC 中的项目程序集将数据存储到数据库中。
问题是当我编译我的项目并从 GAC 中删除程序集并用新版本替换它们时,但是当我运行整个项目时,Captaris Teamplate 会引发错误:
异常类型:System.IO.FileNotFoundException
消息:找不到文件或程序集名称 VBAssembly 或其依赖项之一。
FileName: VBAssembly
FusionLog: === 预绑定状态信息 ===
LOG: DisplayName = VBAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
也就是说,它不会给我程序集 DLL 文件的名称。它试图找到它正在寻找的版本。此类问题的故障排除就像在黑暗中射击,它可以杀死保存在 ASP.NET 临时文件夹、项目文件夹和网站文件夹 (inetpub) 中的旧程序集、重新启动等、测试错误、出现错误,搜索其他一些旧程序集等。
所以我的问题是:
- 是否有一种技术可以让我提取有关此异常的更多信息,例如缺少的程序集名称和版本?
- 有没有一种简单的方法可以在编译时从系统中清除所有旧的程序集版本?
- 在处理这个DLL Hell和/或 Captaris Teamplate 时还有其他建议吗?
我们将 ASP.NET 1.1 版与带有 Captaris Workflow 5.0 的 Visual Studio 2003 一起使用。