Как определить, в какую платформу загружена сборка? - PullRequest
2 голосов
/ 18 августа 2010

Пользователь сообщил нам, что после установки .NET 4 можно разрешить некоторые странные ситуации в нашем приложении:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727" />
  </startup>
</configuration>

Я не знал, что если вы не укажете сборку, это может бытьзагружен в более высокой, но совместимой версии.

Можно ли определить, с какой платформой выполняется исполняемый файл?во время выполнения?или через какой-то внешний процесс?Я хочу подтвердить, что это так, и опыт пользователей не был результатом какой-то другой проблемы.


Process Explorer говорит, что EVEMon работает под 2.0, я склонен подозревать проблемуэто был экологический:

Process Explorer

Ответы [ 3 ]

5 голосов
/ 18 августа 2010

Внутри исполняемого кода вашей сборки вы можете использовать статическое свойство System.Environment.Version, чтобы определить версию CLR, под которой оно выполняется.

Если вы не хотите изменять код сборки,Вы можете использовать Process Explorer , чтобы увидеть библиотеки DLL, загруженные в процесс во время выполнения.Версию CLR можно определить по версии mscoree.dll.

1 голос
/ 18 августа 2010

Как сказала Николь, Process Explorer - определенно самый простой способ. Вы также можете получить эту информацию из дампа полной памяти, используя WindDBG.

Также обратите внимание, что с 4.0 вы получаете бок о бок CLR хостинг . До 4.0, если вы не владели процессом, у вас не было возможности узнать, какой CLR был загружен . Это может быть причиной того, почему вы испытали поведение, которое вы описали.

1 голос
/ 18 августа 2010

Не имеет смысла, программа, предназначенная для CLR версии 2.0.50727, не будет автоматически работать с .NET 4.0.Требуется явная запись в файле .config.Учитывая мастерство вашего клиента с файлами .config, это могло быть то, что она на самом деле сделала, а затем обнаружила, что возникла проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...