我有第三方工作流软件(Captaris Teamplate),引用了我的项目中引用其他项目解决方案中的程序集,所有都通过GAC(全局程序集缓存)进行引用。
When our application executes, it invokes a Captaris Teamplate method to create a workflow process which in turn uses project assemblies in the GAC to store data into a database.
问题在于当我编译我的项目并从GAC中删除程序集并替换它们为新版本时,但是当我运行整个项目时,Captaris Teamplate会抛出一个错误:
Exception Type: System.IO.FileNotFoundException
Message: File or assembly name VBAssembly, or one of its dependencies, was not found.
FileName: VBAssembly
FusionLog: === Pre-bind state information ===
LOG: DisplayName = VBAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
也就是说,它没有给我提供程序集 DLL 文件的名称。它试图找到需要的版本。解决这种问题就像是在黑暗中射击,它可能会花费数天的时间删除保存在 ASP.NET 临时文件夹、项目文件夹和网站文件夹(inetpub)中的旧程序集,重启等等,测试错误,出现错误,搜索其他旧程序集等。
所以我的问题是:
- Is there a technique that would allow me to extract more information on this exception such as the name of the assembly and version that is missing?
- Is there an easy way to clean up all those old assembly versions from the system at compile time?
- Any other suggestions in dealing with this DLL Hell and/or Captaris Teamplate?
我们正在使用带有Captaris Workflow 5.0的Visual Studio 2003的ASP.NET版本1.1。