Puis-je spécifier supportedRuntime (ou tout autre paramètre de configuration) sans fichier .config dans .net?

J’ai une application WinForms qui devrait être très facile à déployer avec juste et un fichier .exe. Il utilise le framework 2.0 et ne fonctionne donc pas sur Windows 8 par défaut. Si j’inclus un fichier .config avec les parameters suivants, cela fonctionne correctement sur W8:

      

Cependant, je dois maintenant déployer deux fichiers et cela n’est pas acceptable. Est-ce que je peux faire quelque chose pour “intégrer” ces parameters dans l’exe lui-même?

J’ai essayé d’utiliser WinZip Self Extror, ​​mais ce n’est pas une option non plus, car je ne peux pas personnaliser son interface.

L’exécutable .NET contient un petit morceau de code natif, destiné à charger la version CLR appropriée dans un processus.

Loader appelle shim (MSCOREE.DLL, l’exécutable .NET a une dépendance native à partir de cette DLL) pour charger CLR ( CLRCreateInstance dans la v4).
Le contenu de l’élément de configuration est traité par le shim.

Cela signifie que vous ne pouvez pas traiter l’élément dans le code managé, car il n’y a pas de CLR (ni de code managé) pour le moment. Le seul moyen est d’écrire votre propre hôte CLR. Je pense qu’il est beaucoup plus facile d’expédier votre application avec un fichier de configuration ou de créer une version pour .NET 4 / 4.5.

Je vais poster une réponse moi-même. IExpress, inclus avec Windows, semble être une bonne solution au problème.