Могу ли я указать supportedRuntime (или любой другой параметр конфигурации) без файла .config в .net?
У меня есть приложение WinForms, которое должно быть очень просто развернуть с помощью только и .exe файла. Он использует фреймворк 2.0, поэтому он не работает в Windows 8 по умолчанию. Если я включаю файл .config со следующими параметрами, он отлично работает на W8:
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
Однако теперь мне нужно развернуть два файла, и это неприемлемо. Есть ли что-то, что я могу сделать, чтобы "внедрить" эти параметры в сам exe?
Я попытался использовать самозахват WinZip, но это тоже не вариант, потому что я не могу настроить его интерфейс.
Ответы
Ответ 1
Исполняемый файл .NET содержит небольшую часть собственного кода, который предназначен для загрузки соответствующей версии CLR в процесс.
Перемычки вызовов загрузчика (MSCOREE.DLL, исполняемый файл .NET имеет собственную зависимость от этой DLL) для загрузки CLR (CLRCreateInstance в версии 4).
Содержимое элемента <startup>
обрабатывается прокладкой.
Это означает, что вы не можете обработать элемент <startup>
в управляемом коде, потому что в данный момент нет CLR (и любого управляемого кода). Единственный способ - написать собственный хост CLR. Я думаю, гораздо проще отправить ваше приложение с помощью файла конфигурации или создать версию для .NET 4/4.5.
Ответ 2
Я сам отправлю ответ. IExpress, включенный с Windows, кажется хорошим решением проблемы.