У меня есть вопрос, касающийся 2 версий CLR, то есть версии 2 и версии 4 .NET Framework, которые используют разные местоположения GAC. У меня есть клиентское приложение, которое ссылается на сборку «X» из v2 GAC (C: \ Windows \ Assembly). Сейчас я обновляю сборку «X» для запуска в v4 .NET Framework (C: \ Windows \ Microsoft.NET \ assembly), однако я не хочу перекомпилировать клиентское приложение. Обратите внимание, что сборка "X" удаляется из v2 GAC перед установкой в v4 GAC.
Можно ли создать файл политики издателя, который перенаправляет сборку, которая находилась в версии 2 CLR, в версию 4 CLR? Если да, то как это достигается?
Я выполнил поиск в MSDN и понял, что в элементе assemblyBinding есть поле applyTo, в котором можно указать версию .NET Framework, но, похоже, оно охватывает всю привязку.
Что бы я хотел, это что-то вроде:
<bindingRedirect oldVersion="1.0.0.0" .Net 2 newVersion="2.0.0.0" .Net 4/>
Я прочитал здесь http://msdn.microsoft.com/en-us/magazine/dd727509.aspx, что приложения CLR v2.0 теперь не могут видеть сборки CLR v4.0 в GAC. Однако вы можете заставить приложение использовать обновленный CLR, используя:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
Так будет ли достаточно смеси этого плюс политика издателя, или есть другой способ?