Как определить поддерживаемую архитектуру фреймворка (x86 или x86-64) в Mono и .NET? - PullRequest
2 голосов
/ 15 ноября 2010

В .NET / Windows есть переменная окружения PROCESSOR_ARCHITECTURE, которая определяет, является ли запущенный процесс x32, x64 или IA64.

Существует также метод API GetNativeSystemInfo, который может определить, поддерживает ли ОС Windows x86-64.

Правда ли, что всегда будет версия x64.NET Framework, пока версия для x86 доступна на Windows x64?Или есть какие-либо средства для определения, какие платформы поддерживаются установкой .NET на компьютере?

А как насчет Mono / Linux или других реализаций сторонних разработчиков?Может ли версия Mono x86 работать на Linux x86-64?Как определить (программно), какие платформы поддерживаются установкой Mono?

Добавлено 16.11.2010

Я разрабатываю своего рода систему плагинов (хорошо,Я знаю, что есть система AddIns, но она слишком затоплена конвейерными сборками).Я хочу выяснить, какие виды сборок могут быть загружены в процессе выполнения (представленном сборкой, не зависящей от платформы) и какие архитектуры сборок могут быть выполнены системой в изолированном процессе.Решение создать тестовые сборки для каждой архитектуры в системе и попытаться запустить его не выглядит элегантно.

Ответы [ 3 ]

0 голосов
/ 15 ноября 2010

Проверка Environment.Is64BitProcess.

С другой стороны, зачем вам это обнаруживать?Единственный допустимый сценарий, о котором я могу подумать, это P / Invoke, который уже загружает правильную (x86 / x64 / other) версию двоичных библиотек.Кроме того, существует больше возможных архитектур, чем x86 и x64: даже если вы ограничиваете свой код реализацией Microsoft .Net, вы также можете работать на Itanium.

0 голосов
/ 14 июля 2012

Для других платформ см. Здесь:

http://mjhutchinson.com/journal/2010/01/25/integrating_gtk_application_mac

Имеется код для более надежного обнаружения OS X, который идентифицирует себя как UNIX.

0 голосов
/ 15 ноября 2010

Правда ли, что всегда будет версия .NET Framework для x64, если версия x86 доступна для Windows x64?

Подумайте, не так ли это.Это означало бы, что на 64-разрядной версии Windows можно было установить только x86 или только x64 .NET.Но такого установщика от MS нет, так что это было бы возможно только с сторонним настроенным установщиком.

Помимо предположительного нарушения лицензионного соглашения MS, я бы очень неохотно доверял такой установке (что ещеон пропустил? Имеет ли он часть .NET, который должен быть установлен правильно?)

Поскольку установка MS бесплатна, кажется, что у кого-то нет стимула вкладывать в работу по созданию такогоВыборочная установка Я завершаю: в 64-разрядной версии Windows, если .NET установлен для одной разрядности, он устанавливается для обоих.

(Обратите внимание, если я правильно помню, это не относится к .NET 2, для 1.1 и 1.0не было x64 .NET.)

...