Как правильно загружать 32-битные DLL-зависимости при запуске программы из пакетного файла

Я написал инструмент, который ссылается на Microsoft.TeamFoundation.VersionControl.Client.dll, который является 32-разрядной библиотекой DLL.

Когда я создаю свой инструмент для 64-битной Windows, я настраиваю Visual Studio специально для X86, чтобы принудительно использовать 32-битную сборку.

Нацеливание на X86 вместо All-CPU не позволяет мне получить исключение BadImageFormatException, пока я вызываю инструмент напрямую (например, вводя «myTool.exe» в командной строке). Однако, если я запускаю пакетный файл, который вызывает инструмент, я все равно получаю исключение. Это происходит, даже если пакетный файл запускается в 32-разрядной командной строке (%WINDIR%\SysWOW64\cmd.exe).

Что еще я могу сделать, чтобы заставить эту работу работать?


person Neil    schedule 11.05.2010    source источник


Ответы (1)


Поскольку это 64-битная машина, на которой вы запускаете командную строку, она 64-битная. Вот как вы открываете и запускаете 32-битную командную строку:

http://www.tipandtrick.net/2008/how-to-open-and-run-32-bit-command-prompt-in-64-bit-x64-windows/

Я бы тоже проверил:

http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework/topic46570.aspx и http://filips.net/archives/2008/01/17/getting-badimageformateexception-in-64-bit-windows/

person kemiller2002    schedule 11.05.2010
comment
Цитирую себя: это происходит, даже если командный файл запускается в 32-разрядной командной строке (%WINDIR%\SysWOW64\cmd.exe). - person Neil; 11.05.2010
comment
Спасибо за попытку помочь. Другие ссылки просто говорят мне, что я уже знаю и уже пробовал. Но я ценю, что вы нашли время, чтобы ответить. - person Neil; 13.05.2010