BadImageFormatException при запуске с включенной Application Framework

У меня есть приложение .NET, которое я разрабатывал в течение многих лет (около 15 проектов, некоторые из которых довольно большие), и я только что столкнулся со следующим исключением при попытке его запустить.

Необработанное исключение System.BadImageFormatException: не удалось загрузить файл или сборку System.Runtime.Remoting, Version = 4.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089 или одну из его зависимостей. Была сделана попытка загрузить программу с неверным форматом.

Кажется, нет никакого стека вызовов - это происходит до запуска в мой код, поэтому я даже не могу вмешаться. Я использовал эту DLL в некоторых проектах, но теперь я прошел и полностью удалил все ссылки на нее , но я все еще получаю сообщение об ошибке. Это происходит только с этим проектом (я могу запускать другие проекты в рамках решения нормально, а другие проекты из других решений нормально).

РЕДАКТИРОВАТЬ

После долгой возни отключение фреймворка приложения на вкладке приложения в разделе «Мой проект», кажется, позволяет ему запускаться, но я не могу понять, почему. Я действительно хочу снова включить его, поскольку использую некоторые из этих функций.

РЕДАКТИРОВАТЬ 2 После того, как мы долго возились, я думаю, что это вызвано фреймворком приложения, использующим удаленное взаимодействие для обеспечения того, что это приложение с одним экземпляром. Однако рефлектор .NET, кажется, указывает на то, что на самом деле это не должно запускаться, если я сниму отметку с опции одного экземпляра, но у меня все еще есть проблема, даже если я это сделаю. Тем не менее, он по-прежнему входит в область действия метода, который использует типы из этой сборки (Microsoft.VisualBasic.ApplicationServices.ApplicationBase.Run), поэтому я предполагаю, что это то, что заставляет его попытаться разрешить эту сборку. Хотя все это интересно, на самом деле это не дает никакого ответа, почему я получаю это исключение. Я пробовал воспроизвести его с пустым проектом, и он отлично работает - оба настроены на одни и те же настройки фреймворка приложения, как на .NET 4.0, так и на x86. Я не понимаю, куда идти дальше.


person wizzardmr42    schedule 05.04.2013    source источник
comment
32/64 проблема обычно - например, первая ссылка stackoverflow.com/questions/2728560/   -  person NSGaga-mostly-inactive    schedule 05.04.2013
comment
Может быть, но если я даже не ссылаюсь на это, как мне решить !?   -  person wizzardmr42    schedule 05.04.2013
comment
у вас есть кое-что, что от этого зависит - сложно сказать - это могло означать что угодно :)   -  person NSGaga-mostly-inactive    schedule 05.04.2013
comment
Есть идеи по его отслеживанию?   -  person wizzardmr42    schedule 05.04.2013
comment
попробуйте dependency walker - или реализуйте AppDomain.CurrentDomain.AssemblyResolve - например, что-то подобное я опубликовал вчера (см. только часть события) - stackoverflow.com/a/15824128/417747 - или другое утилита для отслеживания того, что вы на самом деле загружаете   -  person NSGaga-mostly-inactive    schedule 05.04.2013
comment
Пробовал ходить по зависимостям - нет в списке. Не могу прикрепить обработчик для AssemblyResolve, поскольку это происходит до того, как я смогу получить какой-либо из своего кода. Не указан в .NET Reflector как зависимость, и fuslogvw не показывает никаких ошибок   -  person wizzardmr42    schedule 05.04.2013
comment
«Резолвер» должен быть прикреплен как можно раньше - до того, как какой-либо из ваших кодов попадет в область видимости - Основная часть или часть формы настройки winform, WPF перед запуском приложения и т. Д. ваш случай (если это более укоренившаяся ошибка).   -  person NSGaga-mostly-inactive    schedule 05.04.2013
comment
Удалось прикрепить обработчик в конструкторе приложения и включить отладчик, чтобы проверить, дошел ли он так далеко. Однако обработчик не вызывается. Я установил, что он проходит через конструктор приложения нормально, но, похоже, не доходит до каких-либо событий в классе приложения или даже в любых переопределенных On-методах, которые я пытаюсь добавить   -  person wizzardmr42    schedule 05.04.2013
comment
это довольно специфическая проблема (я понятия не имею, как работают службы приложений VB) - вы пробовали отлаживать / выпускать, если разница - как вы строите? попробуйте установить все на Any - или all на x86 (я имею в виду все проекты в конфигурации), это иногда является проблемой. Какая у тебя машина 86 или   -  person NSGaga-mostly-inactive    schedule 05.04.2013
comment
Машина x64. Сборка x86. Сборка AnyCPU / x64 вызывает BadImageFormat в других ссылках (я полагаю, я мог бы попытаться перестроить их все как AnyCPU, но это будет проблемой, поскольку существует довольно много и некоторые другие версии .NET, поэтому необходимо переделать ссылки). Сборка и отладка с помощью VS2012. Релиз на самом деле, кажется, прошел, но обычно я всегда создаю Debug. Нет никакой разницы, запускаю я напрямую или через отладчик.   -  person wizzardmr42    schedule 05.04.2013
comment
это может быть что-то с этой конфигурацией - если Release работает, он может иметь другие настройки в конфигурациях (AnyCPU и т. д.). Пройдите, убедитесь, что то же самое - сделайте последовательным. Что-то все еще «строится» неожиданным образом - или есть вызванная зависимость, которая не «от мира сего» :)   -  person NSGaga-mostly-inactive    schedule 05.04.2013


Ответы (1)


Обычно это может произойти, когда вы изменили целевую структуру .csproj и вернули ее к тому, с чего вы начали.

Убедитесь, что 1, если supportedRuntime version = "другая среда выполнения, отличная от цели проекта cs" в теге запуска в app.config.

Убедитесь, что 2 Это также означает проверку других автоматически сгенерированных или других файлов в папке свойств, чтобы увидеть, нет ли несоответствия времени выполнения между этими файлами и файлом, определенным в файле .csproj.

Это может просто сэкономить вам много времени, прежде чем вы начнете пробовать разные вещи со свойствами проекта, чтобы преодолеть ошибку.

person purvin    schedule 11.04.2013