MCR и .NET несовместимость - PullRequest
       14

MCR и .NET несовместимость

8 голосов
/ 13 декабря 2010

Я пытаюсь скомпилировать приложение Matlab (R2010b), которое использует модуль .NET, но я столкнулся с проблемой несовместимости между MCR и модулем .NET:

  • .NETмодуль скомпилирован с Visual Studio 2010.
  • MCR настроен для использования Visual Studio 2010.
  • Приложение также содержит несколько Mex-файлов, созданных с помощью Visual Studio 2010, и они прекрасно работаюти в Matlab, и в MCR.

Если я загружаю сборку из Matlab cli, все работает нормально, но после компиляции приложения и запуска его из cmd.exe выдается сообщение о том, чтосборка построена с временем выполнения, более новым, чем то, которое загружено в данный момент.Я думаю, что Matlab R2010b построен с Visual Studio 2008 и считаю, что это проблема, но мне интересно, есть ли у кого-нибудь решение этой проблемы?

1 Ответ

7 голосов
/ 01 июля 2011

Решение состоит в том, чтобы предоставить файл конфигурации приложения (foo.exe.config для приложения с именем foo.exe) рядом со скомпилированным exe-файлом со следующей записью:

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
 </configuration>

Интерфейс MATLAB .NET построен на основе .NET Framework 2.0, что означает, что при отсутствии файла конфигурации приложения загружается 2.0 CLR. При запуске в MATLAB записи <supportedRuntime> из файла конфигурации сообщают MATLAB о необходимости загрузки 4.0 CLR.

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