Не удалось загрузить файл или сборку... или одну из ее зависимостей. Предпринята попытка загрузить программу с неверным форматом (файл.resx).

Я получаю следующее сообщение об ошибке при компиляции или попытке запустить приложение в 64-разрядной версии Windows 7. Я искал в Интернете, и у многих людей появляется одно и то же сообщение об ошибке. Однако ни одно из решений не решает мою проблему или ситуацию. Я использую Visual Studio 2010.

Сообщение об ошибке

Ошибка 38 Не удалось загрузить файл или сборку 'file:///D:/ Проекты / Проекты Windows / Сварка / Компоненты /FileAttachments/FileAttachments/FileAttachments/bin/x86/Debug/FileAttaching.dll' или одна из ее зависимостей. Была предпринята попытка загрузить программу с неверным форматом. Линия 1212, позиция 5. D:\ Проекты \ Проекты Windows\Weld\Weld\Weld.UI\frmMain.resx 1212 5 Weld.UI

Описание

Итак, у меня есть два проекта, проект пользовательского интерфейса и проект FileAttachment. Проект пользовательского интерфейса имеет ссылку на проект FileAttachment. Когда я компилирую проект пользовательского интерфейса в режиме "Любой процессор", все работает нормально, и он работает. Я предполагаю, что "Любой ЦП" будет работать в 64-битном режиме при компиляции, так как это платформа, которую я использую.

Я хочу запустить / скомпилировать как x86, поэтому я пытаюсь это сделать. Я изменяю конфигурацию для всех проектов на x86 и проверяю, что эти конфигурации компилируются в x86. Я компилирую и получаю ошибку, как указано выше.

Я нахожу странным, что он компилируется и работает нормально в 64-битной, но не 32-битной. Однако, если эти пользователи скомпилированы и развернуты как "Любой процессор", если у них есть x86, он все равно работает для них без проблем. Я просто не могу скомпилировать или запустить как x86 на моем ПК. Опять же, я могу скомпилировать как любой процессор и развернуть на 32-битном ПК без каких-либо проблем.

Ни один из проектов не ссылается ни на какие 64-битные DLL-файлы. Проверено, что оба проекта ориентированы на 32-битные файлы DLL и сборки.NET Framework.

Мне нужно скомпилировать и запустить это локально в 32-битном режиме. Мне нужно JIT редактировать / продолжить, между прочим.

Вот строка кода в файле resx, которая вызывает проблему:

 <data name="ImageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
....{mime data}....
 </data>

Проверено, что файл resx создан для.NET 2.0 и ссылается только на сборки.NET 2.0, а не на версии.NET 4.0.

Как я могу исправить эту проблему? Я искал в Интернете и нашел сотни людей с тем же сообщением об ошибке, но с другой проблемой.

4 ответа

Решение

Похоже, это ошибка VS 2010 со списками изображений. См. https://connect.microsoft.com/VisualStudio/feedback/details/532584/error-when-compiling-resx-file-seems-related-to-beta2-bug-5252020?wa=wsignin1.0

Я смог использовать указанный выше способ, чтобы заставить его работать на меня.


Написал Luis Mack 5/12/2010 в 8:50 AM Я обнаружил ту же проблему, только для конкретного проекта при компиляции на 64-битной машине. Исправление, которое SEEMS работает, состоит в том, чтобы вручную изменять один символ в потоке изображения КАЖДЫЙ РАЗ, когда пользовательский контроль или форма редактируются в конструкторе.

AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w

Изменить на AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w

То есть 00LjAuMC4w обратно в 0yLjAuMC4w в конце строки (00 назад в 0y)


Джим

Моим самым простым решением было просто перейти в строку с ошибкой и изменить base64 на base32

<data name="myGUIcontrol.myObj" mimetype="application/x-microsoft.net.object.binary.base32">
... block of binary here

Но я хотел бы найти способ, чтобы это не происходило каждый раз, когда я вносил изменения в дизайнера. Может быть, атрибут для класса, который заставляет VS10 сделать его base32??

Мы столкнулись с той же проблемой на прошлой неделе, и мы нашли хороший обходной путь.

Вы должны открыть .resx файл в конструкторе и установите модификатор доступа из общего доступа в отсутствие генерации кода.

Я столкнулся с той же проблемой с одной из моих программ. Проблема в том, что по какой-то причине Visual Studio генерирует 64-битные блоки данных для некоторых свойств элемента управления GUI, которые затем невозможно загрузить при компиляции в x86.

В моем случае я могу обойти эту проблему, удалив блоки пробламатических данных из файла resx вместе со строками строчного кода в файле cs.designer, которые ссылаются на эти блоки. Я могу сделать это, так как соответствующие строки исходного кода, которые присваивают ссылочное свойство, являются избыточными и не нужны. Единственное, что раздражает, это то, что мне приходится каждый раз, когда я изменяю что-либо в конструкторе, исправлять эти исправления, поскольку Visual Studio добавляет их в плохой код.

Другие вопросы по тегам