.NET App.config File contenente uselegacyv2runtimeactivationpolicy non utilizzato quando l'app è stata lanciata tramite associazione file

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

  •  27-10-2019
  •  | 
  •  

Domanda

La mia app ha bisogno uselegacyv2runtimeactivationpolicy Nel suo .exe.config perché è un'app CLR4 che utilizza assiemi CLR2 in modalità mista.

Va tutto bene quando si avvia la nostra app dal menu Start, ma se un utente avvia la nostra app facendo clic su uno dei loro file che ha un'associazione del tipo di file con la nostra app, il file app.config non viene letto e il caricamento di questi Gli assiemi CLR2 falliscono.

Sulla base di ulteriori ricerche, sembra che ShelexEcute non legga il file .config (anche quando è specificata la cartella dell'app), ma Winexec lo fa. Presumo che la shell utilizzi Shelexecute per l'avvio di un'app tramite associazione di file.

Esiste una soluzione alternativa per questo oltre a scrivere un'app intermedia che imposta la cartella corrente prima di iniziare il processo dell'app principale? Questo è stato suggerito altrove su questo sito.

Grazie in anticipo!

È stato utile?

Soluzione

Verificare che le impostazioni del registro delle associazioni di file utilizzino file di file lunghi e non nomi di file brevi. Ad esempio, il command Il valore qui dovrebbe utilizzare il nome file lungo per aprire il documento.

HKEY_CLASSES_ROOT\MyFile.Document\shell\open\command

La mia ipotesi è che Windows non espanda il nome del nome breve nel nome lungo quando si avvia l'applicazione e cerca di utilizzare il nome corto per risolvere il file app.config che non riesce a trovare.

EDIT: ho confermato la mia teoria rinominando l'app.config con il nome corto corrispondente trovato nel registro e poi ha funzionato. La rimozione del file APP.Config rinominato lo interrompe nuovamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top