Подтвердить что ты не робот

Могу ли я указать 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, но это тоже не вариант, потому что я не могу настроить его интерфейс.

4b9b3361

Ответ 1

Исполняемый файл .NET содержит небольшую часть собственного кода, который предназначен для загрузки соответствующей версии CLR в процесс.

Перемычки вызовов загрузчика (MSCOREE.DLL, исполняемый файл .NET имеет собственную зависимость от этой DLL) для загрузки CLR (CLRCreateInstance в версии 4).
Содержимое элемента <startup> обрабатывается прокладкой.

Это означает, что вы не можете обработать элемент <startup> в управляемом коде, потому что в данный момент нет CLR (и любого управляемого кода). Единственный способ - написать собственный хост CLR. Я думаю, гораздо проще отправить ваше приложение с помощью файла конфигурации или создать версию для .NET 4/4.5.

Ответ 2

Я сам отправлю ответ. IExpress, включенный с Windows, кажется хорошим решением проблемы.