2009-06-24 19 views
11

Ich habe eine Lösung in VS2008 (C#), die mehrere Projekte enthält. Ich habe gerade einige der .csproj-Dateien für unseren Build-Prozess umgerüstet und plötzlich beim Codieren von Projekt B werden keine Referenzen von Projekt A im Klassencode erkannt ... denke an die roten, verschnörkelten Linien unter einem von mir erstellten Variablentyp. Das Erstellen der Lösung generiert jedoch keine Fehler. Warum verhält es sich so?Visual Studio: Referenzen im Code nicht erkannt?

Antwort

19

Ich würde vorschlagen, dass Sie Ihre Visual Studio Temp-Dateien löschen - es kann oft verwirrt über Projektstrukturen und erfordern einen Neustart.

Beenden Sie zuerst VS vollständig und starten Sie es neu. Wenn das Problem weiterhin besteht, suchen Sie Ihren VS-Cache-Ordner und löschen Sie ihn, und führen Sie dann eine Neuerstellung durch.

Hilfe bei der Suche nach Ihrem Cache-Ordner, check this post.

+2

Neustart + clean + rebuild hat es getan. Seltsames Verhalten, ich wünschte, ich wüsste, warum es das überhaupt getan hat, also kann ich versuchen, es zu vermeiden, wie es mir jetzt schon ein paar Mal passiert ist. Vielen Dank! – Chris

+0

nette Idee. Sie erhalten +1 – rlbond

+2

Clean + Neustart hat den Trick gemacht. – AgentFire

2

Stellen Sie in Ihren Projekteigenschaften von B sicher, dass Projekt A unter Abhängigkeiten geprüft wird.

+0

Sie sind überprüft. – Chris

+0

Oh gut. Es war einen Versuch wert. – rlbond

+0

Ja, +1 für eine Aufnahme mindestens :) Danke, aber. – Chris

1

Sicherstellen, dass beiden Projekte im Configuration Manager gebaut werden

(rechts auf der Lösung klicken und dann auf „Configuration Manager“)

Sie könnten auch über die Redline schweben oder einfach nur wieder aufzubauen, um zu sehen wenn Sie mehr Details bekommen. C# und VB sind beide ziemlich gut darin, dir zu sagen, warum sie nicht glücklich sind.

3

Wenn VS merkwürdig wonky reagiert, und ich keine logische Lösung finden kann, ich Visual Studio beenden, und manuell eine 'clean' durch Löschen aller bin/obj Ordner.

Ich habe eine Batch-Datei, die dies für mich schneller als ich es manuell tun könnte. Ich lege das in mein Lösungsverzeichnis und alle meine Projekte befinden sich in Unterverzeichnissen.

rem "%%~dpa" says: Give me the (d)drive and (p)path of the (a, %%a) file. 
rem However, our dir /a:d will result in only listing folders... 
rem The final "%%a" is just appending the 'file' (diretory name) to the 
rem drive-and-path string 
for /f %%a in ('dir /b /a:d *.*') do call :process "%%~dpa%%a" 
pause 
goto :eof 

:process 
echo Looking in %1 
cd "%1" 
if EXIST "%1\bin" (
    echo Found 'bin' - it's gone now. 
    rd /s /q "%1\bin" 
) 
if EXIST "%1\obj" (
    echo Found 'obj' - it's gone now. 
    rd /s /q "%1\obj" 
) 
cd .. 
+0

Sicher kann man sicher sein, dass die Dateien ordnungsgemäß neu erstellt werden, wenn Sie VS schließen, töten Sie die vshosts und dann löschen Sie die Dateien von Hand. – Robino

Verwandte Themen