Приложение .NET с использованием собственной библиотеки DLL (управление сборкой) - PullRequest
0 голосов
/ 09 апреля 2010

У меня есть приложение .NET, которое зависит от встроенной библиотеки DLL. У меня приложение .NET установлено как AnyCPU. На этапе после сборки я планирую скопировать правильную собственную DLL из некоторого каталога (x86 или AMD64) и поместить ее в целевой путь.

Однако это не работает. На 64-разрядном компьютере переменная среды PROCESSOR_ARCHITECTURE имеет значение «x86» в Visual Studio.

Моя альтернатива прямо сейчас - создать небольшой инструмент, который выводит архитектуру процессора. Это будет использоваться шагом после сборки.

Есть ли лучшая альтернатива?

(Примечание: при развертывании / упаковке приложения правильная собственная DLL копируется на правильную платформу. Но это означает, что у нас есть две отдельные папки выпуска для x86 и AMD64, что нормально, так как это для драйвера устройства. Приложение является утилитой для водителя).

1 Ответ

2 голосов
/ 09 апреля 2010

Visual Studio является 32-битным приложением и, таким образом, работает на уровне WoW64 в 64-битных системах. Я предполагаю, что именно поэтому PROCESSOR_ARCHITECTURE выдает здесь "x86" - совместимость: приложение должно действительно думать, что это 32-битная система.

Вы можете проверить наличие и значение переменной PROCESSOR_ARCHITEW6432, которая будет равна AMD64, даже если фактическое приложение выполняется под WoW64. Обратите внимание, что эта переменная не существует в 32-битной Windows и также не определена для 64-битных процессов в 64-битной Windows.

...