Я пишу тесты для приложения, использующего Outlook Redemption, который должен обязательно выполнять 64-разрядные (он подключается к окнам MAPI и Outlook x64). К сожалению, я не могу на всю жизнь заставлять его запускать тест в 64-битном режиме. Я попытался использовать файл .runsettings
(отредактирован для указания 64-битного) и файл .testsettings
(также отредактирован), и, наконец, я выбрал Test>TestSettings>Default Processor Architecture>64-bit
, но безрезультатно.
Каждый раз System.Environment.Is64BitProcess является ложным, и когда я загружаю dll для подключения к Outlook и MAPI, я получаю ужасный COM-исключение: Wrong OS or OS version for application (Exception from HRESULT: 0x800401FA (CO_E_WRONGOSFORAPP))
что указывает на то, что Установлен 64-разрядный Outlook, и процесс, пытающийся получить к нему доступ, 32-разрядный.
Я перезапустил VS 2012 после внесения изменений настроек, поскольку я где-то читал, что может потребоваться перезагрузка. У кого-нибудь есть другие предложения? Я мог бы просто написать это как консольное приложение, которое запускает неформальные тесты и сообщает о своем статусе, но мой следующий шаг - интегрировать эти тесты в автоматическую сборку. Любая помощь будет принята с благодарностью.
редактировать
Снимок экрана страницы настроек узла в.testsettings
эксперимент
Интересно, что я сделал небольшой эксперимент. Я создал новое решение с одним проектом консольного приложения. Я поставил там общедоступный метод, который просто вернул true. Когда я запустил консольное приложение и приостановил выполнение, я посмотрел и действительно работает 64-битный; проблем нет. Затем я добавил тестовый проект, создав один тест, который называется методом. Я также добавил var is64 = Environment.Is64bitProcess
и поставил после него var is64 = Environment.Is64bitProcess
останова.
Как и ожидалось, без изменения каких-либо параметров is64 был ложным. Я выбрал 64-битную архитектуру по умолчанию из раскрывающегося списка, затем очистил решение и снова проверил тест, тот же результат, 32-разрядный. Я перезапустил VS2012, очистил, построил, тот же результат. Я создал файл testettings и ссылался на него в меню Test, чистая сборка, то же самое, перезагрузка, очистка, сборка. Я создал файл runsettings, установил <TargetPlatform>x64</TargetPlatform>
, ссылаясь на то, что в тестовом меню снова пробежал все это и получил те же результаты. QTAgent32.exe продолжает запускать этот процесс и абсолютно отказывается прислушиваться к моим требованиям о том, чтобы он выполнял 64 бит.
Клянусь, если мне нужно удалить QTAgent32.exe и переименуйте QTAgent на это имя, я это сделаю. Я не выше того, чтобы переполнять мои желания по горло компьютерами, когда он хочет быть упрямым. Пожалуйста, если вы не хотите, чтобы я плохо обращался с рабочей станцией, кто-то показал мне, что происходит не так. Подумайте о компьютерах.