我有一个引用程序集“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。
请帮忙。
答案 0 :(得分:0)
(注意 - 前期编辑重新外部1.0 dlls)
您使用的是外部dll吗?也许某些第三方xna dll引用了1.0版本。如果首先发现这一点,则所有投注都可能会被取消。尝试查看反射器中的任何外部dll,请查看它们引用的版本。您也可以尝试为xna dll添加version policy。