Die Quelldatei unterscheidet sich von der Zeit, als das Modul erstellt wurde


103

Das macht mich verrückt.

Ich habe ein ziemlich großes Projekt, das ich ändern möchte. Ich habe vorhin bemerkt, dass DbCommandVisual Studio beim Tippen keine Syntaxhervorhebung vorgenommen hat und ich benutze System.Data.Common.

Obwohl nichts hervorgehoben wurde, schien das Projekt in meinem Browser einwandfrei zu laufen. Also habe ich beschlossen, den Debugger auszuführen, um zu sehen, ob die Dinge wirklich so funktionieren, wie sie sein sollten.

Jedes Mal, wenn die Klasse aufgerufen wird, die die Hervorhebung nicht durchgeführt hat, erhalte ich die "the source file is different from when the module was built"Nachricht.

Ich habe die Lösung bereinigt und mehrmals neu erstellt, tmp-Dateien gelöscht und alle Anweisungen hier befolgt . , startete den Webserver neu und es sagt mir immer noch, dass die Quelldateien unterschiedlich sind, wenn sie eindeutig nicht sind.

Aus diesem Grund kann ich keinen der Codes testen, die ich heute geschrieben habe.

  • Wie kann sich die Quelle von der Binärdatei unterscheiden, wenn ich sie gerade eingehalten habe?
  • Gibt es eine Möglichkeit, dem visuellen Studio einen Sinn zu geben, oder fehlt mir nur etwas?

Entschuldigung, wenn das ein bisschen viel war. Kurzversion: Ich kompiliere mein Programm, versuche dann, es zu debuggen, und Visual Studio teilt mir mit, dass meine Quelldatei (die ich gerade kompiliert habe) sich von dem Modul unterscheidet, das ich gerade erstellt habe. Ich möchte nur wissen, warum es das denkt
frustrierter

Antworten:


111

Ich habe dieses Problem beim Ausführen einer Konsolen-App, bei der die andere Quelle die Quelle mit dem Einstiegspunkt war (statische Leere Main). Das Löschen der Verzeichnisse bin und obj und das Durchführen einer vollständigen Neuerstellung schienen dies zu korrigieren, aber jedes Mal, wenn ich eine Codeänderung vornahm, war sie wieder veraltet.

Der Grund, den ich dafür gefunden habe, war:

  1. Ich hatte "Nur Startprojekte und Abhängigkeiten von Ausführen erstellen" aktiviert (Extras -> Optionen -> Projekte und Lösungen -> Erstellen und Ausführen).
  2. In Configuration Manager wurde in meinem Startprojekt "Build" nicht aktiviert

(Für # 2 -> Zugriff über die Symbolleiste unter der Dropdown-Liste 'Debug / Release'.)


7
+1 für den Konfigurationsmanager-Tipp. Ich habe eine Stunde lang versucht, das zu klären, und das war es.
Nick Sarabyn

Ich hatte mehrere Zweige einer Lösung in TFS. Das Löschen der Verzeichnisse bin und obj in allen ausgecheckten Zweigen schien die Dinge zu klären.
Ersatzbytes

in meinem Fall war ich das geändert solution platformsvon Any CPUzu Mixed Platformirrtümlich !!! Ich ändere es wieder auf Any CPUund es funktioniert wieder.
Vaheeds

Vielen Dank, die Lösung> Eigenschaften> Konfigurationseigenschaften> Konfiguration, meine Konsolen-App (die Tests für eine Web-App in derselben SLN ausführt) wurde deaktiviert.
emery.noel

23

Ich hatte nur das gleiche Problem, meine Projekte befanden sich alle in der gleichen Lösung, sodass sie Projekt-zu-Projekt-Referenzen verwendeten. Wenn eines geändert wurde, sollten die anderen aktualisiert werden. Dies war jedoch nicht der Fall. Ich habe versucht, VS2010 zu erstellen, neu zu erstellen, zu schließen und eine neue Kopie aus unserer Quellcodeverwaltung zu ziehen. Nichts davon hat funktioniert. Am Ende habe ich versucht, mit der rechten Maustaste auf das Projekt zu klicken und jedes Projekt einzeln neu zu erstellen. Dadurch wurden die DLL- und PDF-Dateien aktualisiert, sodass ich sie debuggen konnte.

Das Problem hierbei ist, dass Ihre DLL- und / oder Ihre PDF-Dateien nicht synchron sind.


1
Sie haben es nicht direkt erwähnt, aber "Projekt entladen" (erneut laden) funktioniert bei mir, danke.
JavaLover

Das hat bei mir funktioniert:> Nichts davon hat funktioniert. Am Ende habe ich versucht, mit der rechten Maustaste auf das Projekt zu klicken und jedes Projekt einzeln neu zu erstellen. Dadurch wurden die DLL- und PDF-Dateien aktualisiert, sodass ich sie debuggen konnte.
Khachatur

Projekt entladen (erneut laden) und die neuesten Bits auf dem Webserver (IIS) veröffentlichen funktioniert für mich.
Jason Tang

5

Folge diesen Schritten

  1. Löschen Sie einfach das bin-Verzeichnis aus dem Projekt, in dem die DLL generiert wird.
  2. Erstellen Sie das Projekt neu.
  3. Entfernen Sie Verweise aus dem Projekt, die auf die DLL verweisen.
  4. Fügen Sie die Referenz erneut hinzu.
  5. Genießen.

4

Zusätzlich zu diesen Antworten hatte ich das gleiche Problem beim Ersetzen neuer DLLs durch alte aufgrund des falschen Pfades. Wenn dieser Fehler weiterhin angezeigt wird, verweisen Sie möglicherweise nicht auf den falschen Pfad für die DLLs. Gehen Sie zum IIS-Manager und klicken Sie auf die Website, auf der Ihre DLLs verwendet werden. Klicken Sie im rechten Fenster auf Erweiterte Einstellungen und wechseln Sie im Datei-Explorer zum Pfad des Ordners Physischer Pfad. Stellen Sie sicher, dass Sie diesen Ordner zum Ersetzen Ihrer DLLs verwenden.


4

Einige Dinge, die Sie überprüfen sollten:

Haben Sie Ihre Projektreferenzen noch einmal überprüft?

Haben Sie einen von Visual Studio gestarteten Webserver, der noch ausgeführt wird? Überprüfen Sie die Taskleiste und suchen Sie nach einer Seite mit einem Zahnradsymbol (möglicherweise haben Sie mehrere):

Alt-Text
(Quelle: msdn.com )

Klicken Sie mit der rechten Maustaste und schließen Sie es. Sie können mehr als eine haben. Können Sie Ihre Änderungen jetzt debuggen?

Führen Sie die Debug-Version aus, haben aber nur die Release-Version erstellt (oder umgekehrt)?

War die Kompilierung tatsächlich erfolgreich? Ich weiß, dass ich durch "Es gab Fehler, möchten Sie trotzdem fortfahren?" Nachricht ein paar Mal ohne es zu merken.


Die Kompilierungen sind erfolgreich. Ich bin ein bisschen ein Noob, wenn es um Visual Studio geht. Wie überprüfe ich, ob ich die Debug-Version oder die Version ausführe?
frustrierter

1
@frustrated - Ich habe nur versucht, das Offensichtliche zu beseitigen. Um zu überprüfen, ob Sie sich in der Version befinden oder debuggen, aktivieren Sie das Dropdown-Menü neben dem Symbol "Debuggen" in der Symbolleiste. Es wird entweder "Debug" oder "Release" sein.
ChrisF

Danke dir. Es heißt Debug. Ist es das, was es sein sollte?
frustrierter

@frustrated - Es ist ein guter Anfang;). Sie können den Release-Code "debuggen", aber er ist nicht so nützlich - aber das ist hier nicht relevant. Dies bedeutet, dass Sie die Debug-Binärdateien erstellen (oder zumindest erstellen sollten). Ich muss noch etwas darüber nachdenken - ohne das Problem tatsächlich zu sehen, ist es ein bisschen schwierig zu diagnostizieren.
ChrisF

"Ohne das Problem tatsächlich zu sehen, ist es ein bisschen schwierig zu diagnostizieren", dachte ich mir. Ich weiß die Hilfe zu schätzen
frustrierter

3

Bei Webdiensten kann das Problem mithilfe des Visual Studio-Befehls "Im Browser anzeigen" verursacht werden. Dadurch werden die DLL- und PDB-Dateien des Dienstes in den Ordnern bin und obj abgelegt. Beim Aufrufen des Webdienstes von einem Client aus verwendet Visual Studio den PDB im Ordner bin (oder obj), verwendet jedoch die DLL im Ausgabe-Build-Ordner des Projekts. Es gibt einige Problemumgehungen:

  1. Versuchen Sie, die DLL- und PDB-Dateien in den Bin- und Obj-Dateien des Webdienstes zu löschen.
  2. Klicken Sie in Visual Studio auf "Im Browser anzeigen".

Wenn Sie zuvor den Fehler "Nicht übereinstimmende Quelldatei" erhalten haben, hat Visual Studio den Dateinamen möglicherweise einer schwarzen Liste hinzugefügt. Überprüfen Sie Ihre Lösungseigenschaften. Wählen Sie links im Dialogfeld "Allgemeine Eigenschaften -> Quelldateien debuggen". Wenn Ihre Webdienst-Quelldateien im Feld "Suchen Sie nicht nach diesen Quelldateien" angezeigt werden, löschen Sie sie.


2

Ich hatte gerade dieses Problem.

Ich habe alles versucht, aber nur das hat funktioniert:

  • Löschen Sie die PDF-Datei für die Lösung.
  • Löschen Sie die fehlerhaften OBJ-Dateien (für die Datei, die als nicht synchron gemeldet wird).

Erstellen Sie die Lösung.

Dies hat das Problem für alle Builds behoben, die für mich vorwärts gehen.


Ich denke, das Löschen der PDF-Dateien ist hier der Schlüssel. Dies geschah mir, weil ich veraltete PDF-Dateien aus einem anderen Zweig kopiert hatte.
Danzomida

1

So habe ich das Problem in Visual Studio 2010 behoben:

1) Ändern Sie die Option "Lösungskonfigurationen" von "Debug" in "Release".

2) Starten Sie das Debuggen

3) Beenden Sie das Debuggen und schalten Sie die Option "Lösungskonfigurationen" wieder auf "Debuggen".

Das hat bei mir funktioniert. Schritt 3 ist optional - es hat gut funktioniert, als ich es in "Release" geändert habe, aber ich wollte es wieder ändern.


1

Meine Lösung:

Ich hatte ein vorhandenes Projekt aus einer anderen Lösung in eine neue Lösungsdatei aufgenommen.

Ich habe nicht bemerkt, dass beim Wiederherstellen des vorhandenen Projekts die endgültige Ausgabe in das Ausgabeverzeichnis der NEUEN Lösung gestellt wurde. Ich hatte einen Linkerpfad definiert, um in das Ausgabeverzeichnis der ALTEN Lösung zu schauen.

Durch das Umschalten meines Projekts auf die Suche im Ausgabeverzeichnis der neuen Lösung wurde dieses Problem für mich behoben.


1

Ich hatte dieses Problem und es stellte sich heraus, dass ich meine Konsolenanwendung als Windows-Anwendung ausführte. Durch Zurückschalten des Ausgabetyps auf die Konsole wurde das Problem behoben.


1

Ich hatte das gleiche Problem. Um dies zu beheben, habe ich den "Release-Modus" zum Debuggen in VS2013 verwendet. Was für mich ausreicht, weil ich in einem Knoten js \ c ++ Addon arbeite.


1

Entladen Sie das Projekt mit der Datei, die den Fehler verursacht.

Laden Sie das Projekt neu.

Fest


1

In Visual Studio 2017 wurde dieses Problem durch Löschen des versteckten .vs-Ordners in behoben.


1

Mein Problem war, dass ich zwei Projekte in meiner Lösung hatte. Das zweite war ein Testprojekt, mit dem das erste aufgerufen wurde. Ich hatte den Pfad zu den Referenzen aus dem Release-Ordner des Bin-Ordners ausgewählt.

Wenn ich also den Code des ersten Projekts änderte und neu erstellte, wurden die DLLs im Debug-Ordner aktualisiert, aber das aufrufende Projekt zeigte auf den Release-Ordner, was mir den Fehler gab: "Die Quelldatei unterscheidet sich von der des Moduls erbaut wurde."

Nachdem ich den Verweis auf die DLL des Hauptprojekts im Release-Ordner gelöscht und auf die DLL im Debug-Ordner gesetzt hatte, war das Problem behoben.


0

Lösung: - Das Problem ist: - Wenn sich einige Projekte in einer Lösung auf andere Projekte beziehen, wird die DLL einiger Projekte manchmal nicht automatisch aktualisiert. Wenn Sie die Lösung erstellen, haben einige Projekte frühere Build-DLLs, nicht neueste dlls

Sie müssen manuell die DLL des neuesten Build-Projekts in das referenzierte Projekt kopieren


0

Ich habe Visual Studio 2013 verwendet und hatte ein vorhandenes Projekt unter Quellcodeverwaltung.
Ich hatte eine neue Kopie von der Quellcodeverwaltung in ein neues Verzeichnis heruntergeladen.
Nachdem ich Änderungen an der neuen Kopie vorgenommen hatte, erhielt ich beim Erstellen den fraglichen Fehler.

Meine Lösung:
1) Öffnen Documents\IISExpress\config\applicationhost.config
2) virtualDirectoryKnoten mit Verzeichnis auf die neue Kopie aktualisieren und speichern.


0

Mein Problem war, dass ich einen Webservice im Projekt hatte und den Erstellungspfad geändert habe.

Das Wiederherstellen des Standard-Erstellungspfads hat mein Problem behoben.


0

Ich hatte das gleiche Problem und folgte den meisten Anweisungen in den anderen hier veröffentlichten Antworten. Nichts schien für mich zu funktionieren.

Schließlich habe ich IIS geöffnet und den Anwendungspool für meine Webanwendung recycelt. Ich habe IIS Version 8.5.9600. Ich habe mit der rechten Maustaste auf meine Webanwendung geklickt und dann: Bereitstellen> Recyceln> Anwendungspool recyceln> OK.

Das scheint es behoben zu haben, Haltepunkte werden jetzt wie erwartet getroffen. Ich denke, dass dies zusammen mit dem Löschen der Ordner bin und obj meiner Situation geholfen hat.

Viel Glück!


0

Ich weiß, dass dies eine alte Frage ist, aber ich hatte nur das gleiche Problem und wollte hier posten, falls es jemand anderem hilft. Ich habe einen neuen Computer bekommen und die IT-Abteilung hat meinen alten Computer mit dem neuen zusammengeführt. Beim Einrichten von TFS habe ich einem anderen internen Laufwerk einen anderen lokalen Pfad als den zuvor verwendeten zugeordnet. Der alte Pfad bestand noch aus den zusammengeführten Daten auf meiner Festplatte, sodass ich weiterhin erstellen und ausführen konnte. Meine IIS-Pfade zeigten auch auf das alte Verzeichnis. Nachdem ich IIS auf den richtigen Pfad aktualisiert hatte, konnte ich problemlos debuggen. Ich habe auch das alte Verzeichnis aus gutem Grund gelöscht.


0

Das habe ich auch erlebt. Ich öffne einfach den obj-Ordner im Projekt und öffne dann den Debug-Ordner. Lösche die .pdb-Datei und das ist alles.


0

Dieser Fehler tritt auch auf, wenn Sie versuchen, Änderungen an einer Quelldatei vorzunehmen, die nicht Teil des Projekts ist.

Ich habe eine Methode aus einer DLL eines anderen meiner Projekte debuggt, in der Visual Studio die Quelle sehr hilfreich geladen hatte, da die DLL auf demselben Computer erstellt wurde und den Pfad zur Quelle kannte. Offensichtlich wird das Ändern einer solchen Datei nichts bewirken, es sei denn, Sie erstellen das referenzierte Projekt neu.


0
  1. Löschen Sie alle Haltepunkte.
  2. Wiederaufbauen.
  3. Getan

0

In Visual Studio 2015 mit C ++ wurde das the source file is different from when the module was builtProblem für mich behoben

  • Starten Sie Visual Studio neu.

0

Debug-> Start ohne Debugging.

Diese Option hat bei mir funktioniert. Hoffe das hilft!


0

Überprüfen Sie, ob der Speicherort, auf den Sie mit mex () in Matlab hingewiesen haben, korrekt ist (enthält lib- und obj-Dateien, die bis zum letzten Datum geändert wurden, an dem Sie die Bibliothek in Visual Studio kompiliert haben).

Wenn dies nicht der Fall ist:

Stellen Sie sicher, dass Sie Visual Studio in einem Modus kompilieren, in dem LIB-Dateien gespeichert werden:

  1. Eigenschaften -> Konfigurationseigenschaften -> Allgemein -> Konfigurationstyp -> statische Bibliothek

  2. Eigenschaften -> Konfigurationseigenschaften -> Allgemein -> Zielerweiterung = .lib (anstelle von exe)

Stellen Sie sicher, dass das Ausgabe- und das Zwischenverzeichnis mit dem Matlab-Verzeichnis in übereinstimmen

  1. Eigenschaften -> Konfigurationseigenschaften -> Allgemein -> Ausgabeverzeichnis
  2. Eigenschaften -> Konfigurationseigenschaften -> Allgemein -> Zwischenverzeichnis

0

In meinem Fall funktioniert die Antwort von @ Eliott nicht. Um dieses Problem zu lösen , hatte ich ausschließen / einschließen Aus Projekt meine defiziente Datei, andalso reinigen und neu aufbauen die Lösung.

Nach diesen Aktionen werden meine Datei mit meinen letzten Änderungen und der Debugger wiederhergestellt.

Ich hoffe diese Hilfe.


0

Ich erhalte dieses Problem beim Debuggen manchmal mit Visual Studio, aber wenn die Anwendung von IIS bereitgestellt wird . (Wir müssen in dieser Form aus komplizierten Gründen entwickeln, die damit zu tun haben, wie der ursprüngliche Entwickler dieses Projekt eingerichtet hat.)

Wenn ich die Datei ändere und neu erstelle, wird dies häufig behoben. Ich weiß, das klingt albern, aber ich habe nur versucht, Code zu debuggen, um zu sehen, warum es etwas Seltsames macht, wenn ich es eine Weile nicht geändert habe, und ich habe ein Dutzend Dinge von dieser Seite ausprobiert, aber es wurde nur durch Ändern behoben die Datei..

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.