.net runtime пытается использовать неправильную версию сборки - PullRequest
0 голосов
/ 16 января 2009

У меня есть приложение, которое ссылается на сборку "Microsoft.Xna.Framework, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = 6d5c3888ef60e27d". Я создал проект установщика, который устанавливает эту сборку в GAC (запустив установщик перенаправления XNA).

Однако, когда эта сборка впервые используется, я получаю исключение во время 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 в проводнике.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 16 января 2009

(примечание - предварительные даты редактируются для внешних 1.0 dll)

Используете ли вы какие-либо внешние библиотеки? Возможно, какая-то сторонняя xna dll, ссылающаяся на версию 1.0. Если это будет обнаружено первым, все ставки могут быть отключены. Попробуйте посмотреть на любые внешние библиотеки в отражателе, чтобы увидеть, на какую версию они ссылаются. Вы также можете попробовать добавить политику версий для xna dll.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...