Do I have some weird setting that is making this happen? I only want to change the text of a message box (and no other assemblies depend on that one) yet VS rebuilds all of my
It's also possible to change the setting 'On Run, when projects are out of date' to 'Never Build' instead of 'Ask'. (its in the menu 'Tools -> Options -> Projects & Solutions -> Build & Run) This way, you'd need to press F6 every time you make a change to build the out-of-date projects, but at least it will allow you to debug with F5 without the recompile.
I have to say this is not ideal, but it's something. There was one issue though I had while using casini: The app-pool didn't recyle every time I press F5 because casini keeps running. You will have to manually stop casini from the icontray when you encouter problems but it's a major time-saver in contrast to rebuilding the entire site.
There's some limited control over this without using Configurations if you check the option to only build startup projects and dependencies on Run.
Tools → Options → Projects and Solutions → Build and Run → Only build startup projects and dependencies on Run
The "Play" button is probably not what you think it is, or you have incremental linking and the like turned off in your Project Settings.
You can find out what is causing Visual Studio to think each project is out of date, and then address the issue directly.
You will get a huge amount of output in the output window detailing exactly what the build is doing. Before building each project it will print out why it thinks it is out of date. An example of such output is:
Project 'Foo' is not up to date. Input file 'c:\Bar.cs' is modified after output file
These "not up to date" messages should point you to the real cause of the unnecessary builds, which you can then fix.
You can exclude projects from your general build through the build menu..
Build → Configuration Manager → Uncheck projects that you don't want to always build.
This can massively speed up build time by only building projects that absolutely need to be built every time.
Note though you will have to build the projects that you've unselected independently (right click->Build on the project etc) if they need to be rebuilt.
You can also setup alternate build configurations so you can mix and match what will build when.
The play button is the start debugging feature.
Yes, Visual Studio will ask every project in the solution to build at that point. But note asking to build and actually building are different things. Asking to build merely says, about to do something build again if you would like. MsBuild will then do a bit of checking under the hood and decide if it should actually build the underlying project.
If your project is actually building then there may be some other problem going on. Can you give us some more info like language, project type, etc ...