el archivo fuente es diferente de cuando se construyó el módulo

103

Esto me está volviendo loco.

Tengo un proyecto bastante grande que estoy intentando modificar. Me di cuenta anteriormente de que cuando escribí DbCommand, Visual Studio no resaltó la sintaxis y estoy usando using System.Data.Common.

Aunque no se destacó nada, el proyecto parecía estar funcionando bien en mi navegador. Así que decidí ejecutar el depurador para ver si las cosas realmente funcionaban como deberían.

Cada vez que se llama a la clase que no destacó, recibo el "the source file is different from when the module was built"mensaje.

Limpié la solución y la reconstruí varias veces, eliminé los archivos tmp, seguí todas las instrucciones aquí. Obteniendo "El archivo fuente es diferente de cuando se construyó el módulo". , reinició el servidor web y aún me dice que los archivos de origen son diferentes cuando claramente no lo son.

No puedo probar ninguno de los códigos que he escrito hoy debido a esto.

  • ¿Cómo puede la fuente ser diferente del binario cuando acabo de cumplirlo?
  • ¿Hay alguna forma de introducir algo de sentido en Visual Studio, o simplemente me estoy perdiendo algo?
codificador frustrado
fuente
Lo siento si eso fue demasiado. Versión corta: compilo mi programa, luego trato de depurarlo y Visual Studio me dice que mi archivo fuente (que acabo de compilar) es diferente al módulo que acabo de construir. Solo quiero saber por qué piensa eso
frustratedcoder

Respuestas:

111

Obtuve este problema al ejecutar una aplicación de consola donde la fuente que era diferente era la fuente que tenía el punto de entrada (static void Main). Eliminar los directorios bin y obj y hacer una reconstrucción completa parecía corregir esto, pero cada vez que hacía un cambio de código, volvía a quedar desactualizado.

La razón que encontré para esto fue:

  1. Había marcado "Solo construir proyectos de inicio y dependencias en Ejecutar" (Herramientas -> Opciones -> Proyectos y soluciones -> Construir y ejecutar)
  2. En Configuration Manager, mi proyecto de inicio no tenía marcada "Compilación"

(Para el n. ° 2 -> accesible a través de la barra de herramientas en la lista desplegable 'Depurar / Liberar').

Eliott
fuente
7
+1 para la sugerencia del administrador de configuración. He estado tratando de resolver esto durante una hora y eso fue todo.
Nick Sarabyn
Tenía varias ramas de una solución en TFS. La eliminación de los directorios bin y obj en todas las ramas extraídas pareció aclarar las cosas.
sparebytes
en mi caso, me cambiaron solution platformsde Any CPUa Mixed Platformpor error !!! Lo cambio de nuevo a Any CPUy funciona de nuevo.
vaheeds
Gracias, la Solución> Propiedades> Propiedades de configuración> Configuración, mi aplicación de consola (que ejecuta pruebas para una aplicación web en el mismo SLN) estaba desmarcada.
emery.noel
23

Solo estaba teniendo el mismo problema, mis proyectos estaban todos en la misma solución, por lo que usaban referencias de Proyecto a Proyecto, por lo que a medida que uno cambiaba, los otros deberían haberse actualizado. Sin embargo, no fue el caso, traté de construir, reconstruir, cerrar VS2010, saqué una nueva copia de nuestro control de código fuente. Nada de esto funcionó, lo que finalmente terminé intentando fue hacer clic derecho en el proyecto y reconstruir cada proyecto individualmente. Eso actualizó los archivos .dlls y .pdb para que pudiera depurar.

El problema aquí es que su dll y / o sus archivos pdb no están sincronizados.

Scott Dean
fuente
1
No lo mencionaste directamente, pero "descargar proyecto" (volver a cargar) funciona para mí, gracias.
javaLover
esto funcionó para mí:> Nada de esto funcionó, lo que finalmente terminé intentando fue hacer clic derecho en el proyecto y reconstruir cada proyecto individualmente. Eso actualizó los archivos .dlls y .pdb para que pudiera depurar.
Khachatur
descargar el proyecto (volver a cargarlo) y publicar los últimos bits en el servidor web (IIS) funciona para mí.
Jason Tang
5

Sigue estos pasos

  1. Simplemente elimine el directorio bin del proyecto donde se genera la DLL.
  2. Reconstruya el proyecto.
  3. Elimine la referencia del proyecto que hace referencia a la DLL.
  4. Incluya nuevamente la referencia.
  5. Disfrutar.
Charles
fuente
4

Además de estas respuestas, tuve el mismo problema al reemplazar nuevas DLL por antiguas debido a la ruta incorrecta. Si sigue recibiendo este error, no puede consultar la ruta incorrecta para las DLL. Vaya al administrador de IIS y haga clic en el sitio web que utiliza sus archivos DLL. En la ventana derecha, haga clic en Configuración avanzada y vaya a la ruta de la carpeta Ruta física en el Explorador de archivos y asegúrese de que está usando esta carpeta para reemplazar sus archivos DLL.

bbciao
fuente
4

Algunas cosas que debe verificar:

¿Ha verificado las referencias de su proyecto?

¿Tiene un servidor web iniciado con Visual Studio que aún se está ejecutando? Verifique la bandeja del sistema y busque una página con un ícono de engranaje (puede tener más de uno):

texto alternativo
(fuente: msdn.com )

Haga clic derecho y ciérrelo / salga. Puede tener más de uno. ¿Puedes depurar tus cambios ahora?

¿Está ejecutando la versión de depuración pero solo ha creado la versión de lanzamiento (o viceversa)?

¿La compilación realmente tuvo éxito? Sé que hice clic en "Hubo errores, ¿quieres continuar de todos modos?" mensaje un par de veces sin darme cuenta.

ChrisF
fuente
Las compilaciones tienen éxito. Soy un poco novato cuando se trata de Visual Studio. ¿Cómo verifico si estoy ejecutando la versión de depuración o la versión?
frustratedcoder
1
@frustrado: solo estaba tratando de eliminar lo obvio. Para comprobar si está en versión o depuración, marque el menú desplegable junto al icono de "depuración" en la barra de herramientas. Será "Depurar" o "Liberar".
ChrisF
Gracias. Dice depurar. ¿Es eso lo que debería ser?
frustratedcoder
@frustrated - Es un buen comienzo;). Puede "depurar" el código de lanzamiento, pero no es tan útil, pero eso no es relevante aquí. Significa que está (o al menos debería estarlo) construyendo y ejecutando los binarios de depuración. Tendré que pensar un poco más: sin ver realmente el problema, es un poco difícil de diagnosticar.
ChrisF
"sin ver realmente el problema, es un poco difícil de diagnosticar", pensé. Aunque aprecio la ayuda
frustratedcoder
3

Con los servicios web, el problema puede deberse al uso del comando "Ver en el navegador" de Visual Studio. Esto coloca los archivos DLL y PDB del servicio en las carpetas bin y obj. Al ingresar al servicio web desde un cliente, de alguna manera Visual Studio usa la PDB en la carpeta bin (u obj), pero usa la DLL en la carpeta de compilación de salida del proyecto. Hay un par de soluciones alternativas:

  1. Intente eliminar los archivos DLL y PDB en los archivos bin y obj del servicio web.
  2. Intente hacer clic en "Ver en el navegador" en Visual Studio.

Si anteriormente obtuvo el error de falta de coincidencia del archivo de origen, es posible que Visual Studio haya agregado el nombre del archivo a una lista negra. Verifique las propiedades de su solución. Elija "Propiedades comunes -> Depurar archivos de origen" en el lado izquierdo del cuadro de diálogo. Si los archivos de origen de su servicio web aparecen en el campo "No busque estos archivos de origen", elimínelos.

user3233739
fuente
2

Acabo de tener este problema.

Intenté todo lo anterior, pero solo esto funcionó:

  • elimine el archivo .pdb de la solución.
  • eliminar los archivos .obj infractores (para el archivo que se informa que no está sincronizado)

construya la solución.

Esto solucionó el problema de todas las compilaciones en el futuro.

gollumullog
fuente
Creo que eliminar los archivos .pdb es clave aquí. Esto me sucedió porque había copiado archivos .pdb obsoletos de otra rama.
Danzomida
1

Así es como solucioné el problema en Visual Studio 2010:

1) Cambie la opción 'Configuraciones de soluciones' de "Depurar" a "Liberar"

2) Comience a depurar

3) Detenga la depuración y cambie la opción 'Configuraciones de soluciones' a "Depurar"

Esto funcionó para mí. El paso 3 es opcional: estaba funcionando bien cuando lo cambié a "Liberar", pero quería volver a cambiarlo.

djmcghin
fuente
1

Mi solución:

Había incluido un proyecto existente de una solución diferente en un nuevo archivo de solución.

No me di cuenta de que cuando se reconstruyó el proyecto existente, estaba colocando la salida final en el directorio de salida de la NUEVA solución. Tenía una ruta de enlace definida para buscar en el directorio de salida de la solución VIEJA.

Cambiar mi proyecto para buscar en el directorio de salida de la nueva solución solucionó este problema.

Ben
fuente
1

Tuve este problema y resultó que estaba ejecutando mi aplicación de consola como una aplicación de Windows. Cambiar el tipo de salida a la consola solucionó el problema.

Eliezer Miron
fuente
1

Yo tuve el mismo problema. Para solucionarlo, utilicé el "Modo de lanzamiento" para depurar en VS2013. Lo cual es suficiente para mí, porque estoy trabajando en un complemento de nodo js \ c ++.

jdscardoso
fuente
1

Descargue el proyecto que tiene el archivo que está causando el error.

Vuelve a cargar el proyecto.

Fijo

Miguel
fuente
1

En Visual Studio 2017, eliminar la carpeta .vs oculta en el resolvió este problema para mí.

James Westgate
fuente
1

Mi problema era que tenía dos proyectos en mi solución. El segundo fue un proyecto de prueba utilizado para llamar al primero. Había elegido la ruta a las referencias de la carpeta de lanzamiento de la carpeta bin.

Entonces, cada vez que hice un cambio en el código del primer proyecto y lo reconstruí, actualizaría los dlls en la carpeta de depuración, pero el proyecto de llamada apuntaba a la carpeta de lanzamiento, lo que me dio el error, "el archivo fuente es diferente de cuando el módulo fue construido ".

Una vez que eliminé la referencia al dll del proyecto principal en la carpeta de lanzamiento y lo configuré en el dll en la carpeta de depuración, el problema desapareció.

Dalibor Bjelich
fuente
0

solución: - el problema es: - si tiene algunos proyectos en una solución, consulte otros proyectos, entonces a veces el dll de algunos proyectos, no se actualizará automáticamente, siempre que construya la solución, algunos proyectos tendrán dlls de compilación anteriores, no últimas dlls

tienes que ir manualmente y copiar el dll del último proyecto de compilación en el proyecto referenciado

usuario2930560
fuente
0

Estaba usando Visual Studio 2013 y tenía un proyecto existente bajo control de fuente.
Había descargado una copia nueva del control de código fuente a un nuevo directorio.
Después de realizar cambios en la copia nueva, al compilar recibí el error en cuestión.

Mi solución:
1) Abrir Documents\IISExpress\config\applicationhost.config
2) Actualizar virtualDirectorynodo con directorio a la copia nueva y guardar.

Th4t Guy
fuente
0

Mi problema fue que tenía un servicio web en el proyecto y cambié la ruta de construcción.

Restaurar la ruta de construcción predeterminada resolvió mi problema.

Boanerge
fuente
0

Tuve este mismo problema y seguí la mayoría de las instrucciones en las otras respuestas publicadas aquí, nada parecía funcionar para mí.

Finalmente abrí IIS y reciclé el grupo de aplicaciones para mi aplicación web. Tengo la versión 8.5.9600 de IIS, hice clic con el botón derecho en mi aplicación web y luego: Implementar> Reciclar> Reciclar grupo de aplicaciones> Aceptar.

Eso parece haberlo solucionado, los puntos de interrupción ahora se alcanzan como se esperaba. Creo que hacer esto junto con eliminar las carpetas bin y obj ayudó a mi situación.

¡Buena suerte!

A. Murray
fuente
0

Sé que esta es una pregunta antigua, pero tuve el mismo problema y quería publicar aquí en caso de que ayude a alguien más. Conseguí una computadora nueva y el departamento de TI fusionó mi computadora vieja con la nueva. Cuando configuré TFS, asigné una ruta local diferente a la que estaba usando anteriormente, a una unidad interna adicional. La ruta anterior aún existía a partir de los datos combinados en mi disco duro, por lo que aún podía compilar y ejecutar. Mis rutas de IIS también apuntaban al directorio antiguo. Una vez que actualicé IIS a la ruta correcta, pude depurar bien. También eliminé el directorio antiguo por si acaso.

mslissap
fuente
0

También experimenté eso. Simplemente abro la carpeta obj en el proyecto y luego abro la carpeta de depuración, elimino el archivo .pdb y eso es todo.

usuario5912760
fuente
0

Este error también ocurre si intenta realizar cambios en un archivo fuente que no forma parte del proyecto.

Estaba depurando un método de un .dll de otro de mis proyectos, donde Visual Studio había cargado la fuente de manera bastante útil porque el .dll se había construido en la misma máquina y conocía la ruta a la fuente. Obviamente, cambiar un archivo de este tipo no hará nada a menos que reconstruya el proyecto al que se hace referencia.

Dan Bechard
fuente
0
  1. Elimina todos los puntos de interrupción.
  2. Reconstruir.
  3. Hecho
Jaja
fuente
0

En Visual Studio 2015, usando C ++, lo que solucionó para mí el the source file is different from when the module was builtproblema fue

  • reinicie Visual Studio.
Pedro Reis
fuente
0

Depurar-> iniciar sin depurar.

Esta opción funcionó para mí. ¡Espero que esto ayude!

Madhurya Gandi
fuente
0

Verifique si la ubicación que señaló usando mex () en Matlab es correcta (contiene archivos lib y obj que se modifican a la última fecha en que compiló la biblioteca en Visual Studio).

Si este no es el caso:

Asegúrese de estar compilando Visual Studio en un modo que guarde archivos .lib:

  1. propiedades -> Propiedades de configuración -> General -> Tipo de configuración -> biblioteca estática

  2. propiedades -> Propiedades de configuración -> General -> Extensión de destino = .lib (en lugar de exe)

Asegúrese de que los directorios de salida e intermedios coincidan con el directorio de Matlab en

  1. propiedades -> Propiedades de configuración -> General -> Directorio de salida
  2. propiedades -> Propiedades de configuración -> General -> Directorio intermedio
lahmania
fuente
0

En mi caso, la respuesta de @ Eliott no funciona. Para resolver este problema, tuve que excluir / incluir del proyecto mi archivo deficiente, y también limpiar y reconstruir la solución.

Después de estas acciones, se restauran mi archivo con mis últimas modificaciones y el depurador.

Espero esta ayuda.

Obiwan Kenobi
fuente
0

A veces tengo este problema al depurar con Visual Studio, pero cuando la aplicación es servida por IIS . (Tenemos que desarrollarnos de esta forma por algunas razones complicadas que tienen que ver con cómo el desarrollador original configuró este proyecto).

Cuando cambio el archivo y lo reconstruyo , eso lo soluciona la mayor parte del tiempo. Sé que suena tonto, pero solo estaba tratando de depurar un código para ver por qué está haciendo algo extraño cuando no lo he cambiado por un tiempo, y probé una docena de cosas desde esta página, pero se solucionó simplemente cambiando el archivo..

Chase Anderson
fuente