views:

143

answers:

4

I have a solution in VS2008 (C#) that contains multiple projects. I just retooled some of the .csproj files for our build process, and suddenly while coding Project B won't recognize references from Project A in the class code...think the red squiggly lines under a variable type I've created. However, building the solution generates no errors. Why's it behaving like this?

+2  A: 

In your Project Properties from B, make sure Project A is checked under dependencies.

rlbond
They're checked.
Chris
Oh well. It was worth a shot.
rlbond
Yeah, +1 for taking a shot at least :) Thanks though.
Chris
+5  A: 

I would suggest that you clear your Visual Studio temp files - it can often get confused about project structures and require a fresh start.

First, quit out of VS completely and restart it. If the problem is still there, find your VS cache folder and delete it, and then do a rebuild.

For help finding your cache folder, check this post.

womp
Restart + clean + rebuild did it. Strange behavior, wish I knew why it did that in the first place so I can try to avoid it, as it's happened to me a couple of times now. Thanks!
Chris
nice idea. You get +1
rlbond
+1  A: 

Make sure both projects are being built in the Configuration Manager

(right click on the solution and then click “Configuration Manager”)

You might also hover over the redline or just build again to see if you get anymore details. C# and VB are both pretty good at telling you why they not happy.

Matthew Whited
+2  A: 

When VS starts acting strangely wonky, and I can't find a logical fix, I kill Visual Studio, and manually do a 'clean' by deleting all of the bin/obj folders.

I have a batch file that does this for me quicker than I could do it manually. I place this in my solution directory, and all my projects are found in subdirectories.

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 ..
Yoopergeek