Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья поможет вам решить проблему, при которой MSBuild 4.0 или Microsoft Visual Studio 2010 не может скомпилировать 32-разрядное приложение, предназначенное для .NET Framework 3.5, 3.0 или 2.0 на машине x64.
Исходная версия продукта: Visual Studio 2010
Исходный номер базы знаний: 2028833
Симптомы
Вы создаете приложение, ориентированное на конфигурацию x86, на машине x64 с Visual Studio 2010. Проект содержит файл ресурсов, ссылающийся на 32-битную сборку. Выбрана целевая рабочая среда 3.5, 3.0 или 2.0.
Возможно, вы получите следующую ошибку:
Form1.resx(161,5):error RG0000: не удалось загрузить файл или сборку "<file_name>" или одну из его зависимостей. Была сделана попытка загрузить программу с неверным форматом. Строка 161, позиция 5.
Диагностический журнал сборки показывает, что задача GenerateResource не удается.
Причина
Resgen.exe в <system_drive>:\Program Files (x86)\Microsoft SDKs\Windows\vx.x\bin
, который является частью Windows SDK, помечен как MSIL, поэтому он будет работать как 64-разрядный процесс. Он попытается загрузить 32-битную сборку и потерпит неудачу.
Решение
Чтобы обойти эту проблему, вам необходимо выполнить следующие действия:
Закройте все экземпляры Visual Studio.
В подпапке Visual Studio Tools откройте командную строку Visual Studio с повышенными привилегиями (2010) (используя параметр Запуск от имени администратора). Измените каталог на
<system_drive>:\Program Files (x86)\Microsoft SDKs\Windows\v<x.xx>\bin\
.Выполните команду:
corflags /32bit+ ResGen.exe /force
Откройте <project_name.csproj> в блокноте.
Добавьте свойство
<ResGenToolArchitecture>Managed32Bit</ResGenToolArchitecture>
в разделPropertyGroup
. Сохраните и закройте файл csproj.
Дополнительная информация
Если вы хотите создать файл .resx, который ссылается на 64-разрядную сборку, нацеленную на v3.5, v3.0 или v2.0, вам, возможно, придется перед этим отменить этот обходной путь.
CorFlagsCorFlags.exe (средство преобразования CorFlags) может помочь вам.