¿Qué ‘configuración adicional’ es necesaria para hacer referencia a un ensamblado de modo mixto .NET 2.0 en un proyecto .NET 4.0?

Tengo un proyecto en el que me gustaría usar algunas de las características de .NET 4.0 pero un requisito básico es que puedo usar el marco System.Data.SQLite que se comstack contra 2.X. Veo mencionar que esto es posible, como la respuesta aceptada aquí, pero no veo cómo lograr esto realmente.

Cuando bash ejecutar mi proyecto 4.0 al hacer referencia al ensamblado 2.X, obtengo:

El ensamblado de modo mixto se comstack con la versión ‘v2.0.50727’ del tiempo de ejecución y no se puede cargar en el tiempo de ejecución 4.0 sin información de configuración adicional.

¿Qué “configuración adicional” es necesaria?

Para utilizar un ensamblado de modo mixto CLR 2.0, debe modificar su archivo App.Config para incluir:

 < ?xml version="1.0"?> 

useLegacyV2RuntimeActivationPolicy="true" >


La clave es el indicador useLegacyV2RuntimeActivationPolicy . Esto hace que CLR use la última versión (4.0) para cargar su ensamblaje de modo mixto. Sin esto, no funcionará.

Tenga en cuenta que esto solo es importante para los ensambles de modo mixto (C ++ / CLI). Puede cargar todos los ensamblados de CLR 2 administrados sin especificar esto en app.config .

Esta publicación del foro en .NET Framework Developer Center. Podría proporcionar alguna idea.

(Agregar al archivo de configuración de la aplicación)

      

Dependiendo de la versión del marco al que apunte, le recomendamos que busque aquí la cadena correcta:

http://msdn.microsoft.com/en-us/library/ee517334.aspx

Perdí horas tratando de descubrir por qué mi versión de destino. El cliente de .NET 4.0 necesitaba la versión completa. Usé esto al final:

    

Una vez que establezca el archivo app.config , Visual Studio generará una copia en la carpeta bin denominada App.exe.config . Copie esto en el directorio de la aplicación durante la implementación. Suena obvio, pero sorprendentemente muchas personas pierden este paso. Los desarrolladores de WinForms no se usan para configurar archivos :).

Usar conjuntos 2.0 y 4.0 juntos no es del todo sencillo.

El ORDEN de las declaraciones marco admitidas en app.config en realidad tiene un efecto sobre la excepción de que se lanza el modo mixto. Si das la vuelta al orden de statement, obtendrás un error de modo mixto. Este es el propósito de esta respuesta.

Entonces, si obtiene el error en una aplicación de Windows Forms, intente esto, principalmente aplicaciones de Windows Forms.

      

O si el proyecto no es Windows Form. En un proyecto web, agregue esto al archivo web.config.

      

Pudo resolver el problema agregando el elemento “inicio” con el conjunto de atributos “useLegacyV2RuntimeActivationPolicy” .

     

Pero tuvo que colocarlo como el primer elemento secundario de la etiqueta de configuración en App.config para que tenga efecto .

 < ?xml version="1.0"?>      ...... .... 

Lo anterior no funcionó para mí (estoy trabajando en una aplicación web), pero esto sí …

Edite el archivo sgen.exe.config en la carpeta (tuve que crear uno primero); C: \ Archivos de progtwig (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools (También hay uno en la carpeta v7.0, pero no tuve que cambiarlo, estoy usando VS2012)

Los conatos del XML deberían verse así (lo mismo en respuestas anteriores)

 < ?xml version ="1.0"?>      

Si está trabajando en un servicio web y el ensamblado v2.0 es una dependencia cargada por WcfSvcHost.exe , debe incluir

    

en .. \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ WcfSvcHost.exe.config archivo

De esta forma, Visual Studio podrá enviar la información correcta a través del cargador en tiempo de ejecución.

Me encontré con este problema cuando cambiamos a Visual Studio 2015 . Ninguna de las respuestas anteriores funcionó para nosotros. Al final lo pusimos en funcionamiento agregando el siguiente archivo de configuración a TODOS los ejecutables de sgen.exe en la máquina

 < ?xml version ="1.0"?>      

Particularmente en esta ubicación, incluso cuando estábamos apuntando a .NET 4.0:

C: \ Archivos de progtwig (x86) \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.6 Herramientas

Usé esta configuración:

     

Trabajó para mi

Tuve este problema al actualizar a Visual Studio 2015 y ninguna de las soluciones publicadas aquí hizo ninguna diferencia, aunque la configuración es correcta, la ubicación para el cambio no lo es. Solucioné este problema agregando esta configuración:

   

Para: C: \ Archivos de progtwig (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \ TE.ProcessHost.Managed.exe.config

Luego reinició Visual Studio.

Encontré una forma de evitar esto después de 3-4 horas de búsqueda en Google. He agregado lo siguiente

    

Si esto no resuelve su problema, entonces -> En las referencias del proyecto, Right Click on DLL donde obtiene el error -> Select Properties -> Check the Run-time Version -> Si es v2.0.50727 entonces sabemos el problema. El problema es: estás teniendo la 2.0 Version of respective DLL. La solución es: – Puede delete the respective DLL de las referencias del Proyecto y luego download the latest version of DLL's sitio web correspondiente y agregar la referencia de la última versión de la DLL de referencia, luego funcionará.

Estaba experimentando el mismo error, y me pasé por siempre agregando las declaraciones de inicio sugeridas a varios archivos de configuración en mi solución, intentando aislar la discrepancia del marco. Nada funcionó. También agregué información de inicio a mis esquemas XML . Eso tampoco ayudó. Al observar el archivo real que causaba el problema (que solo decía que se “movió o eliminó”) se reveló que en realidad era el comstackdor de licencias (LC).

Eliminar el archivo de licenses.licx ofensivo parece haber solucionado el problema.

Me enfrentaba a un problema similar al migrar algunos códigos de VS 2008 a VS 2010. Realizar cambios en el archivo App.config resolvió el problema para mí.

      

Agregue los siguientes en esta ubicación C: \ Archivos de progtwig (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools \ x64 FileName: sgen.exe.config (Si no encuentra este archivo, cree y agregue uno)

  < ?xml version ="1.0"?>         

También tuve este problema con la biblioteca de clases, si alguien tiene el problema con la biblioteca de clases agregada a su aplicación principal. Solo agrega

  

para la aplicación principal que luego sería elegida por la biblioteca de la clase.