У нас есть приложение, которое поддерживает как .NET 2.0, так и .NET 4.0, и мы переключаем несколько зависимых от фреймворка сборок с <bindingRedirect />
. Мы использовали элемент <supportedRuntime />
, чтобы позволить приложению запускаться с использованием новейшей инфраструктуры, если она доступна. Однако нам по-прежнему требуется профиль full , а не только профиль client .
Документация для .NET 3.5 указывает, что вы должны явно подписаться на поддержку только для клиента , добавив атрибут sku="client"
к элементу <supportedRuntime />
.
Имя атрибута sku чувствительно к регистру. Если атрибут sku
отсутствует, или если его значение установлено на что-либо, кроме «клиента»,
среда выполнения предполагает, что приложение не является клиентским профилем .NET Framework
применение.
Однако в .NET 4.0 подробная документация по атрибуту sku отсутствует. В наших тестах среда выполнения .NET будет использовать клиентский профиль .NET 4.0, даже если атрибут sku отсутствует. Это проблема, поскольку она не позволяет динамическое перенаправление с файлом .config. Я попытался использовать sku="full"
, чтобы заставить его использовать только полный профиль, но это просто не дает поддержки среды выполнения .NET 4.0.
Вопрос
Кто-нибудь знает способ принудительного использования полного профиля .NET при использовании <supportedRuntime />
(или другого сопоставимого решения) для поддержки нескольких версий .NET Framework?
Фрагмент из нашего файла .config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0.30319" />
<supportedRuntime version="v2.0.50727" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
appliesTo="v4.0.30319">
<dependentAssembly>
<assemblyIdentity name="Application"
publicKeyToken="798276055709c98a"
/>
<bindingRedirect oldVersion="4.1.2000.0"
newVersion="4.1.4000.0" />
<codeBase version="4.1.4000.0"
href="Redistributable\.NET 4.0\Application.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>