3

作为从 .net 1.1 迁移到 .net 3.5 的一部分,我们不得不更改一些供应商 DLL。

其中之一是在我们使用它的 4 个位置中只有 1 个位置给我们带来麻烦:

问题点是一个 Windows 窗体项目,它使用反射来动态加载一些运行长时间运行的进程的 DLL。这些长期运行的进程之一是依赖于我们的供应商 DLL 之一的代理

在我们第一次输入引用库的函数时,我们得到了缺少的程序集异常。我已经检查了一些愚蠢的事情,例如我们是否忘记将引用从旧版本移动到新版本,但事实并非如此。我还检查了项目的 bin 目录,程序集就在那里。

有没有人遇到过 .net 2.0 运行时拒绝加载这样的程序集的情况?如果是这样,我们如何解决这个问题。

附加信息:

在这种情况下,特定的供应商是 dtSearch,这是引发错误的边界:

Private Sub BuildIndex()
    SetIndexOptions()
    ExecuteIndexJob()
End Sub

Private Sub SetIndexOptions()
    'Body removed for brevity
End Sub

该库在 SetIndexOptions 中被引用。BuildIndex()被输入,但在调用 SetIndexOptions 时发生异常。该函数从未实际输入。

4

3 回答 3

4

如果您仍然遇到问题,您可以使用程序集绑定日志查看器 (Fuslogvw.exe)来确定您的应用程序加载了哪些程序集。此工具是 .NET Framework 的一部分。这将为您提供所有相关程序集的详细信息。

我过去在与第三方程序集合作时使用过它,非常有用

于 2009-10-08T22:56:43.897 回答
1

结果发现默认编译选项从 VS2003 更改为 VS2008,并且编译的位数错误:\ 现在我觉得有点傻!

于 2009-10-20T18:32:27.990 回答
1

如果无法加载依赖程序集之一,即使程序集确实存在,也会引发 FileNotFoundException。

尝试使用Dependency Walker检查并查看所有依赖程序集是否也存在。

于 2009-10-08T22:49:09.207 回答