Загрузка скомпилированного приложения C ++ / CLI 3.5 в .NET 4.0 - PullRequest
1 голос
/ 11 марта 2010

Я пытаюсь загрузить смешанное управляемое приложение, скомпилированное и предназначенное для Framework 3.5, в CLR 4.0.

У нас есть файл .config рядом с .exe, где я добавил этот узел:

<?xml version="1.0"?> 
<configuration>
<startup>
    <supportedRuntime version="v4.0.21006" />
</startup>

К сожалению, приложение вылетает при запуске с неприятным стеком вызовов. Может ли кто-нибудь в курсе подтвердить, что смешанное управляемое приложение (.exe - C ++ / CLI) не загрузится в 4.0, если оно было скомпилировано для 3.5?

Я смотрю видео Channel9 о параллельном хостинге CLR, и один из разработчиков, кажется, подразумевает, что это так:

http://channel9.msdn.com/shows/Going+Deep/CLR-4-Side-by-Side-In-Process-What-How-Why/

Спасибо!

Ответы [ 2 ]

4 голосов
/ 11 марта 2010

Вам необходимо установить useLegacyV2RuntimeActivationPolicy , если вы хотите загрузить сборку смешанного режима CLR 2 (.NET 3.5) в процесс CLR 4:

<?xml version="1.0"?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>

Без этого вы получите неприятное исключение.

0 голосов
/ 11 марта 2010

Вы должны быть в состоянии запустить 3.5 и 4.0 в одном и том же процессе. Однако заставить приложение использовать 4.0 вместо 3.5 не представляется возможным.

Чего вы пытаетесь достичь?

...