Ответ 1
Сложный вопрос, я попытаюсь упростить:
-
Любое приложение .NET может быть скомпилировано как для x86 (32-разрядных), так и для 64-разрядных (64-разрядных) одновременно. Фактически они делают по умолчанию. Вы можете изменить это, изменив целевой ЦП на вкладке "Создать" в Свойствах проекта. Поддерживаемые цели: "Любой" (будет компилировать "Just-In-Time" до 32 или 64 бит в зависимости от поддержки оперативной системы), "x86" будет скомпилирован до 32-разрядной версии, которая работает на всех платформах, а "x64" скомпилируется до 64 -бит, который работает только на 64-битных платформах.
-
Да. См. Выше. Также обратите внимание, что иногда выполняется второй уровень компиляции, и это NGEN. Он создает собственное изображение для определенного типа процессора. Однако, если вы общаетесь с этим, вы уже знаете.
-
Для .dll выберите для них "Любой" ЦП. Для .EXE(точка входа) вы должны выбрать Any, x86 или x64. Есть несколько вещей, которые следует учитывать: приложения x86.Net, обращающиеся к родным файлам Windows.dll(interpo), требуют x86 DLL файлов. Таким образом, 64-битное приложение не может получить доступ к 32-битным API-вызовам и наоборот. Это часто является причиной того, что приложения .Net будут работать с 64-разрядными операционными системами. Способ решения этой проблемы - либо правильно исправить .dll, либо просто установить приложение .Net на x86 (32-разрядное) по свойствам. Все остальные зависимости автоматически станут 32-битными во время компиляции "Just-In-Time", если они установлены на "Любые".
-
Преимущества 64-битных сложны. Есть преимущества и недостатки в зависимости от того, что делает ваше приложение. Наиболее очевидным преимуществом является то, что ваше приложение может сломать 2GB-барьер памяти. Недостаток, как описано в № 3, если вы ссылаетесь на 64-разрядную .dll, ваше приложение не будет выполняться в 32-разрядных операционных системах.
-
Все выходит из коробки. Не беспокойтесь о чем-нибудь, кроме всего вышеперечисленного.:)