c# - ¿Qué ''configuración adicional'' es necesaria para hacer referencia a un conjunto de modo mixto.NET 2.0 en un proyecto.NET 4.0?
sqlite .net-4.0 (16)
Agregue lo siguiente en esta ubicación C: / Archivos de programa (x86) / Microsoft SDKs / Windows / v7.0A / Bin / NETFX 4.0 Herramientas / x64 Nombre de archivo: sgen.exe.config (Si no encuentra este archivo, cree y agregue uno)
<?xml version ="1.0"?>
<configuration>
<runtime>
<generatePublisherEvidence enabled="false"/>
</runtime>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
</startup>
</configuration>
Haciendo esto resolvió el problema.
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 que esto es posible, como la respuesta aceptada aquí, pero no veo cómo lograrlo.
Cuando simplemente intento ejecutar mi proyecto 4.0 mientras hago referencia al conjunto 2.X, obtengo:
El ensamblaje de modo mixto se construye contra 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?
Dependiendo de la versión del marco que está apuntando, 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 versión dirigida al cliente .Net 4.0 requería la versión completa. Utilicé esto al final:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"
sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>
El uso de ensamblajes 2.0 y 4.0 juntos no es muy sencillo.
La ORDEN de las declaraciones de marco admitidas en app.config realmente tiene un efecto a excepción de que se lanza el modo mixto. 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.
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
<supportedRuntime version="v2.0.50727"></supportedRuntime>
</startup>
O si el proyecto no es Windows Form. En un proyecto Web agregue esto al archivo web.config.
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
<supportedRuntime version="v2.0.50727"></supportedRuntime>
</startup>
Encontré una forma de evitar esto después de 3-4 horas de googlear. He añadido lo siguiente
<startup selegacyv2runtimeactivationpolicy="true">
<supportedruntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>
Si esto no resuelve su problema, entonces -> En el Proyecto, Right Click on DLL
y obtendrá un error -> Select Properties
-> Check the Run-time Version
-> Si es v2.0.50727
entonces lo sabemos el problema. El problema es: - tienes 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 referencia de la DLL de la versión, entonces funcionará.
Esta http://social.msdn.microsoft.com/Forums/en/clr/thread/58271e39-beca-49ac-90f9-e116fa3dd3c0 en .NET Framework Developer Center. Podría proporcionar alguna idea.
(Añadir al archivo de configuración de la aplicación).
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
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 la falta de coincidencia del marco. Nada funcionó. También agregué información de inicio a mis esquemas XML . Eso tampoco ayudó. Mirar el archivo real que causaba el problema (que solo diría que se "movió o eliminó") reveló que en realidad era el Compilador de licencias (LC).
La eliminación del archivo license.licx ofensivo parece haber solucionado el problema.
Lo anterior no funcionó para mí (estoy trabajando en una aplicación web), pero esto no ...
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 Herramientas (También hay uno en la carpeta v7.0, pero no tuve que cambiar ese, estoy usando VS2012)
Los contenidos del XML deberían tener este aspecto (igual que en las respuestas anteriores)
<?xml version ="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<requiredRuntime safemode="true" imageVersion="v4.0.30319" version="v4.0.30319"/>
</startup>
</configuration>
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
<?xml version ="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
</startup>
</configuration>
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
Me enfrenté a un problema similar al migrar un código de VS 2008 a VS 2010. Realizar cambios en el archivo App.config resolvió el problema por mí.
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"
sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>
</configuration>
Para usar un ensamblaje de modo mixto de CLR 2.0, debe modificar su archivo App.Config para incluir:
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
La clave es el indicador useLegacyV2RuntimeActivationPolicy
. 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 importa para ensamblajes de modo mixto (C ++ / CLI). Puede cargar todos los ensamblados administrados de CLR 2 sin especificar esto en app.config
.
Si está trabajando en un servicio web y el ensamblaje v2.0 es una dependencia que ha cargado WcfSvcHost.exe , debe incluir
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
</startup>
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.
También tuve este problema con la biblioteca de clases. Si alguno tiene el problema con la biblioteca de clases agregada a su aplicación principal. Solo agrega
<startup useLegacyV2RuntimeActivationPolicy="true">
a su aplicación principal, que luego sería elegida por la biblioteca de clases.
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:
<startup useLegacyV2RuntimeActivationPolicy="true">
</startup>
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.
Una vez que establezca el archivo app.config , visual studio generará una copia en la carpeta bin llamada App.exe.config . Copie esto en el directorio de la aplicación durante la implementación. Suena obvio, pero sorprendentemente mucha gente se pierde este paso. Los desarrolladores de WinForms no están acostumbrados a los archivos de configuración :).
Utilicé esta configuración:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v2.0"/>
<supportedRuntime version="v4.0"/>
</startup>
Trabajó para mi
Pude resolver el problema agregando el elemento "inicio" con el conjunto de atributos "useLegacyV2RuntimeActivationPolicy" .
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
Pero tuvo que colocarlo como el primer elemento secundario de la etiqueta de configuración en App.config para que surta efecto .
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
......
....