Сложный вопрос, я постараюсь упростить:
Любое приложение .Net может быть скомпилировано как для x86 (32-разрядных), так и для x64 (64-разрядных) одновременно.На самом деле они делают по умолчанию.Вы можете изменить это, изменив целевой процессор в Build-tab в Свойствах проекта.Поддерживаемые цели: «Любые» (Just-In-Time компилируется в 32- или 64-разрядные в зависимости от поддержки операционной системы), «x86» компилируется в 32-разрядные, которые работают на всех платформах, а «x64» - в 64-бит, который работает только на 64-битных платформах.
Да.Смотри выше.Также обратите внимание, что иногда выполняется второй уровень компиляции, и это NGEN.Он создает собственный образ для определенного типа процессора.Однако, если вы возитесь с этим, вы уже знаете.
Для .dll выберите «Любой» процессор для них.Для .EXE (точка входа) вы должны выбрать Any, x86 или x64.Есть несколько моментов, которые необходимо учитывать: x86 .Net приложениям, обращающимся к собственным .dll-файлам Windows (interpo), требуются x86 .dll-файлы.Таким образом, 64-битное приложение не может получить доступ к 32-битным вызовам API и наоборот.Это часто является причиной сбоя приложений .Net в 64-битных операционных системах.Чтобы решить эту проблему, нужно либо ссылаться на правильные файлы .dll, либо просто установить для приложения .Net значение x86 (32-разрядное) в свойствах.Все остальные зависимости автоматически становятся 32-битными во время компиляции Just-In-Time, если для них установлено значение «Any».
Преимущества 64-битной системы сложны.Есть преимущества и недостатки в зависимости от того, что делает ваше приложение.Наиболее очевидным преимуществом является то, что ваше приложение может преодолеть барьер в 2 ГБ памяти.Недостаток, как объяснено в # 3, если вы ссылаетесь на 64-битную .dll, ваше приложение не будет работать в 32-битных операционных системах.
Все выходит из-под контролякоробка.Не беспокойся ни о чем, кроме всего вышеперечисленного.:)