Tengo un proyecto en el que me gustaría usar algunas de las características de .NET 4.0, pero un requisito fundamental es que puedo usar el marco System.Data.SQLite que se compila contra 2.X. Veo mención de que esto es posible, como la respuesta aceptada aquí, pero no veo cómo lograrlo.
Cuando solo intento ejecutar mi proyecto 4.0 mientras hago referencia al ensamblado 2.X obtengo:
El ensamblaje de modo mixto se compila 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?
SGEN
, entonces la solución debe estar en un archivosgen.exe.config
, al lado desgen.exe
. Por ejemplo, para VS 2015, creeC:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\sgen.exe.config
. Fuente: conjunto de modo mixto SGEN Contenido mínimo del archivo:<configuration><startup useLegacyV2RuntimeActivationPolicy="true"/></configuration>
Respuestas:
Para utilizar un ensamblaje de modo mixto CLR 2.0 , debe modificar su archivo App.Config para incluir:
La clave es la
useLegacyV2RuntimeActivationPolicy
bandera. Esto hace que el 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 conjuntos de modo mixto (C ++ / CLI). Puede cargar todos los ensamblados de CLR 2 administrados sin especificar esto en
app.config
.fuente
Esta publicación del foro en .NET Framework Developer Center. Puede proporcionar alguna idea.
(Agregar al archivo de configuración de la aplicación).
fuente
Dependiendo de la versión del marco al que se dirige, es posible que desee buscar aquí para obtener la cadena correcta:
http://msdn.microsoft.com/en-us/library/ee517334.aspx
Perdí horas tratando de averiguar por qué mi lanzamiento dirigido al cliente .Net 4.0 requería la versión completa. Usé esto al final:
fuente
Una vez que configure 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, mucha gente pierde este paso. Los desarrolladores de WinForms no están acostumbrados a configurar archivos :).
fuente
Usar conjuntos 2.0 y 4.0 juntos no es del todo sencillo.
El ORDEN de las declaraciones de marco admitidas en app.config en realidad tiene un efecto sobre la excepción del modo mixto que se lanza. Si cambia el orden de la declaración, obtendrá 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.
fuente
Pude resolver el problema agregando el elemento "inicio" con el conjunto de atributos "useLegacyV2RuntimeActivationPolicy" .
Pero tuvo que colocarlo como el primer elemento hijo de la etiqueta de configuración en App.config para que surta efecto .
fuente
version="v2.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 programa (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools (También hay uno en la carpeta v7.0, pero no necesité cambiarlo, estoy usando VS2012)
Los componentes del XML deberían verse así (igual en respuestas anteriores)
fuente
Si está trabajando en un servicio web y el ensamblado v2.0 es una dependencia que ha sido cargada por WcfSvcHost.exe, entonces debe incluir
en .. \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ WcfSvcHost.exe.config file
De esta manera, Visual Studio podrá enviar la información correcta a través del cargador en tiempo de ejecución.
fuente
Me encontré con este problema cuando cambiamos a Visual Studio 2015 . Ninguna de las respuestas anteriores funcionó para nosotros. Al final lo hicimos funcionar agregando el siguiente archivo de configuración a TODOS los ejecutables sgen.exe en la máquina
Particularmente en esta ubicación, incluso cuando estábamos apuntando a .NET 4.0:
C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.6 Herramientas
fuente
Usé esta configuración:
Trabajó para mi
fuente
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 del cambio no lo es. Solucioné este problema agregando esta configuración:
Para: C: \ Archivos de programa (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \ TE.ProcessHost.Managed.exe.config
Luego reinició Visual Studio.
fuente
Encontré una forma de evitar esto después de 3-4 horas de googlear. 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 así,v2.0.50727
entonces conocemos el problema. El problema es: - está teniendo la2.0 Version of respective DLL.
solución es: - Puededelete the respective DLL
desde las referencias del proyecto y luegodownload the latest version of DLL's
desde el sitio web correspondiente y agregar la referencia de la última versión de referencia DLL y luego funcionará.fuente
Estaba experimentando este mismo error, y pasé para siempre agregando las declaraciones de inicio sugeridas a varios archivos de configuración en mi solución, intentando aislar el desajuste del marco. Nada funcionó. También agregué información de inicio a mis esquemas XML . Eso tampoco ayudó. Al observar el archivo real que estaba causando el problema (que solo diría que fue "movido o eliminado") reveló que en realidad era el Compilador de Licencia (LC).
Eliminar el archivo ofensivo licens.licx parece haber solucionado el problema.
fuente
Estaba enfrentando un problema similar mientras migraba un código de VS 2008 a VS 2010. Realizar cambios en el archivo App.config resolvió el problema por mí.
fuente
Agregue lo siguiente en esta ubicación C: \ Archivos de programa (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)
Hacer esto resolvió el problema
fuente
Yo suelo
Funciona, pero justo antes de la
</configuration>
etiqueta, de lo contrario, la etiqueta de inicio no funciona correctamentefuente
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
a su aplicación principal que luego sería seleccionada por la biblioteca de la clase.
fuente