Когда нацеливать x64 в Visual Studio

Я недавно начал новую работу, и одной из первых вещей, о которых я заметил, что все говорят, было "обновление" всех наших приложений .NET до x64. Сначала я подумал, что это странно, поскольку все мы знаем, что .NET компилируется в платформенно-независимый IL, а код выполняется конкретным CLR.

Поискав немного дальше, я нашел эту полезную статью и этот пост на SO, которые помогли объяснить ситуацию.

Итак, теперь я понимаю, что IL не меняется, только мета-данные, в основном говорящие о том, запускать в WOW64 или нет на системе x64 (в двух словах).

Итак, если я на системе x64, я могу указать "Any CPU", чтобы запуститься нативно, но не поддерживать 32-битные dll; я могу указать "x86", который будет поддерживать 32-битные dll (поскольку они оба будут работать под WOW64); но когда я должен указать "x64"? Кажется, что 64-битные dll будут поддерживаться в сценарии "Any CPU" на системе x64. Так ли это, если я хочу помешать кому-то запустить мое приложение на 32-разрядной системе или обеспечить сбой при попытке загрузить 32-разрядные dll?

Мне также кажется, что вам только нужно установить значение, отличное от "Any CPU", если в вашем проекте есть сторонние dll, о которых нужно беспокоиться. Не лучше ли оставить значение "Any CPU" для всех остальных проектов, не имеющих дело с другими dll?

Если я все же установлю "x86", потому что у меня 32-разрядная сторонняя dll, будет ли мое приложение считаться запущенным в 64-разрядном режиме, если оно работает на 64-разрядной системе под WOW64?

7
задан Community 23 May 2017 в 12:24
поделиться