fichier .NET app.config contenant useLegacyV2RuntimeActivationPolicy pas utilisé lors de l'application lancée par l'association de fichiers

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

  •  27-10-2019
  •  | 
  •  

Question

Mes besoins app useLegacyV2RuntimeActivationPolicy dans son exe.config parce qu'il est une application qui utilise Clr4 mode mixte d'assemblages CLR2.

Tout va bien lors du démarrage de notre application à partir du menu Démarrer, mais si un utilisateur commence notre application en cliquant sur l'un de leurs fichiers qui a une association de type de fichier avec notre application, le fichier app.config n'est pas lu et chargement de ces ensembles CLR2 échoue.

D'après d'autres recherches, il semble que ShellExecute ne lit pas le fichier .config (même lorsque le dossier de l'application est spécifié), mais WinExec fait. Je présume que le shell utilise ShellExecute pour lancer une application via l'association de fichiers.

Y at-il cette solution de contournement pour plus d'écrire une application intermédiaire qui définit le dossier en cours avant de commencer le processus de l'application principale? Ceci a été suggéré ailleurs sur ce site.

Merci à l'avance!

Était-ce utile?

La solution

Vérifiez que les paramètres du registre d'association de fichiers utilisent les noms longs et pas court-circuiter les noms de fichiers. Par exemple, la valeur command ici doit utiliser le nom de fichier long pour ouvrir le document.

HKEY_CLASSES_ROOT\MyFile.Document\shell\open\command

Je suppose que Windows ne développe pas le nom de fichier court dans le nom long lors du démarrage de l'application et tente d'utiliser le nom court pour résoudre le fichier app.config dont il ne parvient pas à trouver.

Edit: Je confirme ma théorie en renommant le app.config avec le nom court correspondant trouvé dans le registre et cela a fonctionné. Retrait du fichier app.config renomme casse à nouveau il.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top