.NET app.config -Datei mit uselegacyv2runtimeaktivierungspolitisch nicht verwendet, wenn App über die Dateivereinigung gestartet wurde

StackOverflow https://stackoverflow.com/questions/4852646

  •  27-10-2019
  •  | 
  •  

Frage

Meine App braucht uselegacyv2runtimewirksamepolicy in seiner .exe.config, weil es sich um eine CLR4 -App handelt, die den gemischten Modus CLR2 -Baugruppen verwendet.

Bei der Start unserer App im Startmenü ist alles in Ordnung. Wenn jedoch ein Benutzer unsere App startet, indem Sie auf eine ihrer Dateien klicken, die eine Dateityp -Verbindung mit unserer App hat, wird die App.config -Datei nicht gelesen und das Laden dieser CLR2 -Baugruppen schlägen fehl.

Basierend auf weiteren Untersuchungen scheint Shellexecute die .config -Datei nicht zu lesen (auch wenn der App -Ordner angegeben ist), aber Winexec. Ich nehme an, die Shell verwendet Shellexecute, um eine App über die Dateivereinigung zu starten.

Gibt es dafür eine Problemumgehung, neben dem Schreiben einer Zwischen -App, die den aktuellen Ordner festlegt, bevor der Prozess der Haupt -App gestartet wird? Dies wurde an anderer Stelle auf dieser Seite vorgeschlagen.

Danke im Voraus!

War es hilfreich?

Lösung

Überprüfen Sie, ob die Einstellungen der Dateivereinigung lange Dateinamen und keine kurzen Dateinamen verwenden. Zum Beispiel die command Der Wert hier sollte den langen Dateinamen verwenden, um das Dokument zu öffnen.

HKEY_CLASSES_ROOT\MyFile.Document\shell\open\command

Ich vermute, dass Windows den kurzen Dateinamen beim Starten der Anwendung nicht in den langen Namen erweitert und versucht, den Short -Namen zu verwenden, um die App.config -Datei zu beheben, die sie dann nicht finden kann.

Bearbeiten: Ich habe meine Theorie bestätigt, indem ich die App.Config mit dem in der Registrierung gefundenen passenden Short -Namen umbenannt habe, und dann funktionierte sie. Das Entfernen der umbenannten App.config -Datei wird erneut ausgebrochen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top