У меня есть приложение .Net 2.0, которое использует COM для вызова приложения LabVIEW (созданного как .exe). Приложение LabVIEW вызывает различные написанные нами сборки .Net.
Обычно это все работает нормально. У меня есть app.config, который перенаправляет приложение LabVIEW на нужные версии нужных файлов, и все устраивает.
Вчера приложение LabVIEW решило, что не может найти одну из моих сборок на этом ПК. Ошибка журнала Fusion указывает на то, что требуется версия сборки x86, но версия MSIL уже загружена.
Обратите внимание, что мы собрали данную сборку с платформой = x86. Также обратите внимание, что одна и та же сборка прекрасно работала на 5 одинаковых (вплоть до аппаратного) ПК.
Итак, я решил, что у меня нет причин применять x86. Я удалил спецификацию платформы из сборки и собрал версию сборки MSIL.
Fusion тогда имел ту же ошибку, но он сказал, что хочет версию сборки MSIL, когда версия x86 уже была загружена.
(я тоже пытался дурачиться с корфлагом.)
Мы не регистрируем наши сборки в GAC, все они локальны для приложения, и на этом компьютере не было других копий сборок.
Да, и добавьте к путанице: проблема ушла после обновления нашей базы данных, всех вещей. Теперь он работает с той же сборкой, с которой я начал.
Данная сборка вообще не является частью нашего кода БД, это отдельный класс и связанная с ним фабрика. Он использует сборки кода БД, но не имеет прямой связи с базой данных.
Что делает ProcessorArchitecture в .Net привязанным к x86 или MSIL?
Случалось ли это когда-либо с вами, и если да, что вы делали, чтобы это исправить?
(Если проблема вернется, я опубликую точный материал журнала Fusion, так как проблема исчезла, у меня нет доступных журналов.)