Допустим, у меня есть старое приложение, которое будет пытаться загрузить внешнюю сборку.
- Старое приложение скомпилировано в CLR 2.
- Новая сборка скомпилирована в CLR 4.
Я хотел бы иметь возможность запускать это старое приложение в CLR 4. Я помню, что была задействована некоторая XML-манифестация .
Как я могу создать этот XML-файл манифеста, чтобы сообщить, что oldapplication.exe будет работать под CLR 4?
Я нашел несколько предложений, но они, похоже, не работают для меня.
oldapplication.exe.config:
<?xml version ="1.0"?>
<configuration>
<startup>
<!--set the appropriate .net version-->
<requiredRuntime version="4.0.0.0"/>
</startup>
</configuration>
Когда я сделал еще один снимок, я обнаружил, что этот файл служит моим шаблоном:
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.20506 \ Aspnet_regsql.exe.config
<?xml version ="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0.20506"/>
<requiredRuntime version="v4.0.20506" safemode="true"/>
</startup>
</configuration>
Я также обновил код, чтобы сообщить о текущем CLR:
Console.WriteLine(typeof(object).Assembly.ImageRuntimeVersion);
Теперь работает!