2008-09-03 70 views
305

El error exacto es el siguienteme sale un "Se ha intentado cargar un programa con un formato incorrecto" error en un proyecto de duplicación de SQL Server

Could not load file or assembly 'Microsoft.SqlServer.Replication, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. An attempt was made to load a program with an incorrect format.

recientemente he empezado a trabajar en este proyecto nuevo después de un traslado de dos meses a otro proyecto. Funcionó perfectamente antes, y he verificado todas las referencias.

Respuesta

120

He encontrado la solución. Recientemente actualicé mi máquina a Windows 2008 Server de 64 bits. El espacio de nombres SqlServer.Replication se escribió para plataformas de 32 bits. Todo lo que tenía que hacer para volver a ejecutarlo era configurar la plataforma de destino en Project Build Properties en X86.

+0

estoy teniendo este problema con un DLL, pero mi proyecto> Propiedades HDP ... No tiene una pestaña de "Build" (aparentemente todo pero, pero no ese). Las pestañas Compilar y Depurar tienen un menú desplegable de "Plataforma", pero el único elemento del menú desplegable en ambos casos es "Activo (Cualquier CPU)". –

+0

Sucedí encontrar el reverso del problema anterior. Tenía todo funcionando en 64 bits y mi objetivo de compilación era Cualquier CPU. Cuando cambié esto a 64 bits funcionó perfectamente bien :) –

391

El answer by baldy a continuación es correcto, pero es posible que también deba habilitar las aplicaciones de 32 bits en su AppPool.

Fuente: http://www.alexjamesbrown.com/uncategorized/could-not-load-file-or-assembly-chilkatdotnet2-or-one-of-its-dependencies-an-attempt-was-made-to-load-a-program-with-an-incorrect-format/

Si bien la creación de una aplicación se ejecute en mi máquina local (con Vista de 64 bits) me encontré con este error:

Could not load file or assembly ChilkatDotNet2 or one of its dependencies. An attempt was made to load a program with an incorrect format.

Obviamente, la aplicación utiliza ChilKat components, pero parecería que la versión que estamos usando, es solo la versión de 32 bits.

Para resolver este error, configuré mi grupo de aplicaciones en IIS para permitir aplicaciones de 32 bits. Abra el Administrador de IIS, haga clic derecho en el grupo de aplicaciones y seleccione Configuración avanzada (ver más abajo)

enter image description here

a continuación, "permitir que las aplicaciones de 32 bits" en True.

enter image description here

Todo hecho!

+0

¿Esto provocaría que todo el grupo de aplicaciones se ejecutara como de 32 bits y no de 64 bits? ¿Sería una mejor solución volver a compilar la dependencia de las plataformas de 64 bits/todas? Tengo este problema debido a NFOP, pero como es de código abierto, podría volver a compilarlo. – jamiebarrow

+0

Mismo error para mí, excepto con un servicio WCF en IIS. –

+2

El enlace no funciona, pero tu explicación fue suficiente para resolver mi problema. +1 –

87

Cambie el valor de Objetivo de plataforma en la página de propiedades de su proyecto web al Any CPU.

enter image description here

+0

No tiene ningún efecto, desafortunadamente. – Jonathan

+4

Estaba equivocado, esto funcionó, después de que me deshice de todas mis carpetas 'bin'. ¡Gracias! – Jonathan

+0

También solucionó mi problema, pero solo después de hacer esto para CADA proyecto en mi solución. Los pasos mencionados son para proyectos de C#. Para proyectos de VB.NET, cambie Propiedades del proyecto> Compilar> Opciones de compilación avanzadas> CPU de destino a "AnyCPU" –

12

Para aquellos que reciben este error en un proyecto ASP.NET MVC 3 , dentro de Visual Studio en sí:

En una aplicación ASP.NET MVC 3 que estoy trabajando, me intenté agregar una referencia a Microsoft.SqlServer.BatchParser a un proyecto para resolver un problema donde faltaba en un servidor de implementación. (Nuestra aplicación usa SMO; la solución correcta era instalar SQL Server Native Client y un par de cosas más en el servidor de implementación.)

Incluso después de eliminar la referencia a BatchParser, seguí recibiendo el mensaje "Se ha intentado. .. "error, haciendo referencia a la DLL de BatchParser, en cada página de ASP.NET MVC 3 que abrí, y ese error fue seguido por docenas de errores de análisis de página.

Si esto le sucede, haga una búsqueda de archivos y vea si el archivo DLL todavía se encuentra en una de las carpetas \ bin de su proyecto. Incluso si hace una reconstrucción, Visual Studio no borra necesariamente todo en todas sus carpetas \ bin. Cuando eliminé la DLL del contenedor y volví a compilar, el error desapareció.

+0

Acabo de hacer una reconstrucción y el problema desapareció sin tener que eliminar manualmente la DLL. ¡Gracias! – Trevor

53

vaya a IIS -> Grupo de aplicaciones -> Configuración avanzada -> permiten que las aplicaciones de 32 bits

+0

No veo "Application Pool" en el Administrador de IIS ... ??? –

+0

Clay, ¿Qué versión de IIS estás usando? – Harpal

2

Si Publishing en Visual Studio 2012 cuando erroring intento desactivando la "Procompile durante la publicación" opción en el Asistente de publicación.

Un-check "Precompile during publishing"

22

Recientemente tuvimos el problema al intentar ejecutar el código de Visual Studio. En ese caso, debe hacer
HERRAMIENTAS> OPCIONES> Proyectos y soluciones> PROYECTOS WEB y verificar "Utilizar la versión de 64 bits de IIS Express para sitios web y proyectos".

+1

Esto es lo que finalmente funcionó para mí. ¡Especialmente para las personas que intentan depurar la API web con las bibliotecas de Service Fabric! Si está utilizando alguna DLL de Service Fabric en su proyecto, asegúrese de estar utilizando la solución anterior. –

+0

Esta es la ÚNICA solución que funcionó para mí. Gracias. : D –

+0

¡Trabaja para mí también! –

3

cambiarlo a 32 bits (true) funciona

si recibe esta longitud no puede ser menor que cero. Nombre del parámetro: problema de longitud en la configuración del servidor iis haga lo simple cambie la cadena de conexión en el archivo web.config como el nombre del servidor sql y el nombre del servidor y reinicie iis luego intente cargar la página que funciona

0

en la aplicación de formulario de Windows I haz esto, Haz clic derecho en Project-> Properties-> Build-> Check Prefer 32-bit checkbox. Gracias a todos

0
  1. eliminar el directorio prueba de temperatura que se encuentra aquí C: \ Users (Usuario) \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \

  2. Establecer todos los proyectos de x64 en Visual Studio

  3. Establezca la arquitectura predeterminada del procesador en x64 (Test/TestSettings/Default Processor Architecture).

Asegúrate de limpiar compila el archivo de la solución. ¡Espero que esto ayude!

2

Lo tengo en una aplicación MVC5 en Windows 10 contra IIS Express. Mi solución fue la siguiente:

  • Herramientas = Proyectos>
    • Opciones =>
      • Proyectos y Soluciones =>
        • Web =>
          • Use la 64 versión de bit de IIS Express para sitios web y proyectos
Cuestiones relacionadas