Das referenzierte Projekt geht beim Kompilieren "verloren"

102

Ich habe eine C # -Lösung mit zwei Projekten: einem Dienst (dem Hauptprojekt) und einem Logger. Der Dienst verwendet Klassen aus dem Logger. Ich habe innerhalb des Serviceprojekts einen Verweis auf das Logger-Projekt hinzugefügt. Zur Entwurfszeit funktioniert die automatische Vervollständigung einwandfrei: Die Klassen des Loggers sind sichtbar, die von mir verwendeten Referenzen sind entsprechend gefärbt.

Ich baue die Lösung neu auf und es geht schief. Die Referenzen werden nicht mehr erkannt: "Der Name 'Protokollierung' ist im aktuellen Kontext nicht vorhanden 'und die Klassen sind in der automatischen Vervollständigung nicht mehr vorhanden. Durch Entfernen und erneutes Anhängen der Referenz kehre ich zum Grundzustand zurück, in dem die Bezeichner für die automatische Vervollständigung sichtbar sind.

Ich habe neu gestartet, alle Caches geleert und sichergestellt, dass dies die einzige Instanz von VS 2010 ist, die auf meinem Computer ausgeführt wird.

Gibt es etwas Offensichtliches (offensichtlich), das mir fehlt?

Bob Kaufman
quelle

Antworten:

158

Überprüfen Sie Ihre Build-Typen für jedes Projekt unter den Projekteigenschaften. Ich wette, der eine oder andere wird so eingestellt, dass er gegen erstellt wird .NET XX - Client Profile.

Bei inkonsistenten Versionen, insbesondere bei einem Wesen Client Profileund dem anderen nicht, funktioniert es zur Entwurfszeit, schlägt jedoch zur Kompilierungszeit fehl. Ein echtes Gotcha.

In Visual Studio 2010 ist für mich etwas Lustiges los, bei dem Projekte scheinbar zufällig festgelegt werden Client Profile, manchmal beim Erstellen eines Projekts und manchmal einige Tage später. Wahrscheinlich eine Tastenkombination, die ich versehentlich drücke ...

Joshcomley
quelle
1
Ich wette, Sie haben Recht ... und schämen sich für mich, wenn Sie sich nicht an diese vergleichbare Frage erinnern, die ich letzten Monat gestellt habe! stackoverflow.com/questions/3991361/…
Bob Kaufman
6
@ Bob Es passiert immer wieder mit mir und genau wie Sie diese vorherige Frage haben, bin ich jedes Mal, wenn es passiert, für mindestens ein paar Minuten gründlich verwirrt von der ganzen Sache, bis ich mich an "Oooooh, warte, Kunde **" erinnere. ** ing Profile "
Joshcomley
4
Ich hatte auch dieses Problem mit VS2012. Es stellte sich heraus, dass es sich nicht um das Problem mit dem Clientprofil handelte, sondern dass sich das referenzierte Projekt in 4.5 befand und das neue Projekt, auf das verwiesen wurde, standardmäßig 4.0 war. Bumped das auf 4.5 und das Problem ging weg. Gleiche Lösung, nur eine weitere Variante.
Brad Mathews
Dies ist mir kürzlich in VS 2013 passiert. Das Projekt war die Standardeinstellung 4.5, aber eine der Bibliotheken wurde auf 4.5.2 erstellt. Wenn das Projekt 4.5.2 ist und eine der Bibliotheken 4.5 oder 4.5.1 ist, funktioniert es. Aber nicht umgekehrt.
Ahwm
4

Stellen Sie sicher, dass beide Projekte hier dieselbe Ziel-Framework-Version haben: Klicken Sie mit der rechten Maustaste auf Projekt -> Eigenschaften -> Anwendung (Registerkarte) -> Ziel-Framework

Stellen Sie außerdem sicher, dass der Projekt "Logger" (den Sie in das Hauptprojekt aufnehmen möchten) den Ausgabetyp "Klassenbibliothek" hat: Klicken Sie mit der rechten Maustaste auf Projekt -> Eigenschaften -> Anwendung (Registerkarte) -> Ausgabetyp

Erstellen Sie abschließend die Lösung neu.

Manar
quelle