Я недавно начал новую работу, и одной из первых вещей, о которых все говорили, было «обновление» всех наших приложений .NET до x64. Сначала я думал, что это странно, так как мы все знаем, что .NET компилируется в независимый от платформы IL, и конкретный CLR выполняет код.
Глядя немного дальше, я нашел эту полезную статью и эту SO-статью , которая помогла объяснить вещи.
Так что теперь я понимаю, что IL не изменился, только метаданные, в основном говорящие о том, чтобы работать в WOW64 или нет в системе x64 (в двух словах).
Так что, если я нахожусь в системе x64, я могу указать «Любой ЦП» для естественного запуска, но не будет поддерживать 32-битные библиотеки DLL; Я могу указать "x86", который будет поддерживать 32-битные библиотеки DLL (поскольку они оба будут работать под WOW64); но когда бы я указал "x64" ? Похоже, что 64-битные библиотеки будут поддерживаться в сценарии «Любой процессор» в системе x64. Это если я хочу запретить кому-либо запускать мое приложение в 32-битной системе или обеспечить сбой при попытке загрузить 32-битные библиотеки DLL?
Мне также кажется, что вам нужно только установить его на что-то отличное от "Любой ЦП", если у вас есть какой-либо сторонний dll, о котором нужно беспокоиться в вашем проекте. Лучше ли оставить его как «Любой процессор» для любого другого проекта, не связанного с другими dll?
Если мне удастся установить целевое значение "x86" из-за того, что у меня 32-битный сторонний dll, считается ли мое приложение работающим в 64-битной, если в 64-битной системе под WOW64?