.NET App.Config File que contiene uselegacyv2runTimeActivationPolicy no se usa cuando la aplicación se inicia a través de la asociación de archivos

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

  •  27-10-2019
  •  | 
  •  

Pregunta

Mi aplicación necesita uselegacyv2runtimeactivationPolicy en su .exe.config porque es una aplicación CLR4 que utiliza ensambles CLR2 en modo mixto.

Todo está bien al comenzar nuestra aplicación desde el menú Inicio, pero si un usuario inicia nuestra aplicación haciendo clic en uno de sus archivos que tiene una asociación de tipo de archivo con nuestra aplicación, el archivo App.config no se está lee y la carga de estos Los conjuntos de CLR2 falla.

Según más de investigación, parece que ShellexCute no lee el archivo .config (incluso cuando se especifica la carpeta de aplicaciones), pero Winexec lo hace. Supongo que Shell usa ShellexCute para iniciar una aplicación a través de la asociación de archivos.

¿Hay alguna solución para esto además de escribir una aplicación intermedia que establece la carpeta actual antes de iniciar el proceso de la aplicación principal? Esto se sugirió en otra parte de este sitio.

¡Gracias por adelantado!

¿Fue útil?

Solución

Verifique que la configuración del registro de la asociación de archivos use nombres de archivo largos y no por nombres de archivo cortos. Por ejemplo, el command El valor aquí debe usar el nombre de archivo largo para abrir el documento.

HKEY_CLASSES_ROOT\MyFile.Document\shell\open\command

Supongo que Windows no expanda el nombre de archivo corto en el nombre largo al comenzar la aplicación e intenta usar el nombre corto para resolver el archivo App.config que luego no puede encontrar.

Editar: confirmé mi teoría renombrando la aplicación. Config con el nombre corto coincidente que se encuentra en el registro y luego funcionó. Eliminar el archivo app.config renombrado nuevamente lo rompe.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top