【发布时间】:2009-01-16 10:30:02
【问题描述】:
我有一个引用程序集“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,但是即使我可以看到它也找不到它在资源管理器中查看 c:\windows\assembly 时的 GAC。
请帮忙。
【问题讨论】:
-
可能在参考上复制本地?
-
引用的程序集应该在 GAC 中,我可以在 c:\windows\assembly 中看到它。
标签: .net deployment assembly-resolution