Я преобразовал свое решение для 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, который я не очень хорошо понимаю. Во всяком случае, я не смог ничего найти.