Я создал службу Windows как “Любой ЦП”. Почему это работает в 32-разрядном режиме на моей машине на 64 бита? [дубликат]

39
задан Aziz Shaikh 23 October 2012 в 11:01
поделиться

1 ответ

Если приложение exe, запускающее среду CLR, скомпилировано как:

  1. x64: сборки AnyCPU с использованием JIT для компиляции версий сборок x64 (медленно) . сборки x86 получат исключение BadImageFormatException.
  2. x86: AnyCPU выполняет сборку JIT в x86. сборки x64 получат исключение BadImageFormatException.
  3. AnyCPU: .Net по умолчанию будет x86. См. Выше.

Я часто использую стартовое приложение, в котором я явно компилирую .exe как x64 или x86 и отправляю x86 и x86 версии .msi. Это, вероятно, самый простой путь - прирост производительности обычно стоит накладных расходов на управление дополнительными файлами.

В качестве альтернативы вы можете использовать ngen во время процесса установки, который будет выполнять все операции JIT при установке приложения. Вы заметите сокращение времени запуска вашего приложения.

Кроме того, как я недавно обнаружил для приложений x86, для приложений .net существует ограничение в 2 ГБ памяти. Это происходит, даже когда у вас есть 4 ГБ оперативной памяти на вашем x86 и остается много памяти.

-1
ответ дан 27 November 2019 в 02:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: