Я столкнулся со странным сценарием, в котором 32-разрядный процесс утверждает, что его PROCESSOR_ARCHITECTURE - AMD64, вызывая сбой в компонентах, которые принимают решения на основе этого флага.
Я выделил его на следующие шаги:
- В VS2010 создайте проект библиотеки
- На вкладке Свойства проекта / Отладка установите для параметра Запускать внешнюю программу значение VS exe (например, C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \Common7 \ IDE \ devenv.exe)
- Выполните Ctrl-F5, чтобы запустить другой экземпляр VS
- Во втором случае создайте приложение консоли и вставьте следующий код
In Main:
Console.WriteLine(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"));
Console.ReadLine();
- Теперь запустите консольное приложение
И оно отображает AMD64, хотя это 32-битный процесс (по умолчанию дляКонсольные приложения, в соответствии с настройками сборки).
Вопрос : могут ли другие также повторить это, и если да, то можете ли вы объяснить это?
Примечание: если вам интереснопричина, по которой я запускаю VS таким образом, в том, что я использую экспериментальнуюкуст для второго экземпляра
ОБНОВЛЕНИЕ: обратите внимание, что в моем реальном сценарии я сам не ищу эту переменную среды.Вместо этого я использую компонент (SQLCE), который ищет его и полагается на его правильность.