Vraag Kan ik supportedRuntime (of een andere configuratieparameter) opgeven zonder een .config-bestand in .net?


Ik heb een WinForms-app die heel gemakkelijk moet worden geïmplementeerd met alleen en .exe-bestanden. Het maakt gebruik van Framework 2.0 en werkt dus niet standaard op Windows 8. Als ik een .config-bestand met de volgende parameters toevoeg, werkt het prima op W8:

<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>

Nu moet ik echter twee bestanden inzetten en dit is niet acceptabel. Is er iets dat ik kan doen om die parameters in de exe zelf te "embedden"?

Ik heb geprobeerd WinZip self extractor te gebruiken, maar het is ook geen optie, omdat ik de interface niet kan aanpassen.


12
2017-09-07 09:14


oorsprong


antwoorden:


.NET-uitvoerbaar bestand bevat een klein stukje native code, die bedoeld is om de juiste CLR-versie in een proces te laden.

Laderoproepen shim (MSCOREE.DLL, .NET-uitvoerbaar bestand is native-afhankelijkheid van dit DLL-bestand) om CLR te laden (CLRCreateInstance in v4).
Inhoud van <startup> configuratie-element wordt verwerkt door de shim.

Dit betekent dat je niet kunt verwerken <startup> element in beheerde code, omdat er op dit moment geen CLR (en eventuele beheerde code) is. De enige manier is om je eigen CLR-host te schrijven. Ik denk dat het veel eenvoudiger is om je applicatie te verzenden met een configuratiebestand, of een versie voor .NET 4 / 4.5 te bouwen.


12
2017-09-07 11:14



Ik zal zelf een antwoord plaatsen. IExpress, inclusief Windows, lijkt een goede oplossing voor het probleem.


0
2017-09-07 11:46