Проблема с corflags в библиотеке взаимодействия после обновления VS - PullRequest
1 голос
/ 12 июля 2011

Я преобразовал свое решение для Visual Studio с 2008 по 2010 год. В проекте есть ссылка на ShDocVw. Когда я запускаю программу, я получаю исключение BadImageFormatException. Гугл заставил меня проверить библиотеку взаимодействия с corflags:

corflags Interop.ShDocVw.dll

Version   : v2.0.50727 
CLR Header: 2.5
PE        : PE32
CorFlags  : 3
ILONLY    : 1
32BIT     : 1
Signed    : 0

Конечно, установлен флаг 32BIT, поэтому мое приложение, созданное как Любой ЦП на 64-битной машине, не может загрузить эту библиотеку. Если я запускаю corflags / 32BIT - я могу отключить флаг 32BIT, и все работает просто отлично. Вопрос в том, почему эта библиотека Interop генерируется с этим установленным флагом? У меня не было этой проблемы с VS2008, это начало происходить только после обновления.

Что более важно, как я могу это исправить, чтобы мне не приходилось запускать corflags, чтобы выключить бит? Я предполагаю, что это, вероятно, из-за некоторого MSBuild-fu, который я не очень хорошо понимаю. Во всяком случае, я не смог ничего найти.

1 Ответ

2 голосов
/ 12 июля 2011

Проблема в том, что после обновления тег не установлен в определенных в файлах проекта C # и, по-видимому, по умолчанию он равен x86. Итак, чтобы исправить это, перейдите на вкладку Свойства проекта -> Построить и установите Platform Target в значение, отличное от AnyCPU, сохраните его. Теперь установите его обратно в AnyCPU и сохраните его. будет записано в проект со значением AnyCPU, и все в порядке.

Вот где я нашел ответ.

...