0

我有一个引用程序集“Microsoft.Xna.Framework,Version=2.0.0.0,Culture=neutral,PublicKeyToken=6d5c3888ef60e27d”的应用程序。我创建了一个安装程序项目,将这个程序集安装在 GAC 中(通过运行 XNA redist 安装程序)。

但是,当第一次使用此程序集时,我在 JITing 期间收到异常。然后我尝试对图像进行 ngen,并且 ngen 给出以下错误消息:

Failed to load dependency Microsoft.Xna.Framework of assembly x,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null because of the following
error : The specified module could not be found. (Exception from HRESULT: 0x8007007E)

请注意,版本为 1.0.0.0 并且缺少 PublicKeyToken,并且不存在伪造的程序集。什么会导致 JITer 和 ngen 尝试加载这个错误版本的程序集?

程序集的正确版本在 GAC 中。我已经在 Reflector 中打开了我的图像,并且参考在那里正确显示。我还验证了依赖层次结构中没有其他程序集加载伪造的 1.0.0.0 版本。事实上,1.0.0.0 版本在任何地方都不存在,无论是在开发盒上还是在测试机上。

但是,当尝试在测试机器上扩展对Microsoft.Xna.Framework的引用时,Reflector认为(正确地)引用的程序集版本是2.0.0.0,但是即使我可以在GAC中看到它也找不到它在资源管理器中查看 c:\windows\assembly。

请帮忙。

4

1 回答 1

0

(注意 - 提前编辑外部 1.0 dll)

您是否使用任何外部 dll?也许是一些引用 1.0 版本的第 3 方 xna dll。如果首先发现这一点,那么所有的赌注都可能会失败。尝试查看反射器中的任何外部 dll,然后查看它们引用的版本。您还可以尝试为 xna dll 添加版本策略

于 2009-01-16T10:58:16.497 回答