我有一个引用程序集“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。
请帮忙。