У меня есть приложение .NET, которое использует Crystal Reports.Одна из важных вещей, которая удерживала меня от перехода на .NET 4.0, заключается в том, что Crystal Reports не будет работать без следующих строк в файле app.config:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
Проблема заключается в том, что приложениеФайл .config содержит всевозможные другие параметры конфигурации, поэтому его нельзя просто перезаписать.И о ручном обновлении каждого клиентского ПК на самом деле не может быть и речи.
И даже если я пойду, как точно обновить файл на 100%, мне не нравится, когда эти вещи постоянно находятся там.Например, если бы мы когда-нибудь захотели перейти на .NET 5.0, это означало бы пройти и удалить строку version = "v4.0" из каждого файла конфигурации.
Я не понимаю, почему Microsoftпоместите этот тип конфигурации в файл app.config вместо файла манифеста или чего-то подобного, который может быть встроен непосредственно в исполняемый файл.
В любом случае, я наконец нашел человека, который привел пример того, каксконфигурируйте этот параметр во время выполнения, а не в файле конфигурации:
http://reedcopsey.com/2011/09/15/setting-uselegacyv2runtimeactivationpolicy-at-runtime/
Так в чем же заключается опасность установки свойства времени выполнения программно через ICLRRuntimeInfo.BindAsLegacyV2Runtime ()?Есть ли вероятность того, что Guid на ICLRRuntimeInfo изменится с каким-нибудь пакетом обновления .NET или чем-то еще?
Мне трудно представить, какие проблемы это может вызвать в будущем, и этонамного проще вытащить его обратно из исполняемого файла, чем пытаться обновить все файлы app.config, которые уже существуют.Так каковы возможные недостатки?