Hi Guys,
So I'm not from the Java world but I gather that those guys have a concept of partial recompilation whereby when a solution is re-built then only the files that have changed are recompiled.
From my point of view there are two things of interest here, firstly I wonder if this sort of thing would be possible in .NET, namely when running tests. And secondly I want to know what the mechanism to achieve this involves.
With regards to the first point, what I mean is that in a lot of .NET projects that I have seen there may be several projects all referenced by a single test assembly. This essentially means that every time I want to run a test the whole world needs recompiling. Now obviously, a better partitioning of test projects to production projects would be in order, but from my experiences this doesn't happen. What I would like to see happen is that when I need to run a test then only the code required for that test is compiled.
For the second part I really am interested in the mechanism that is used to achieve partial compilation in the Java world. Are the Java IDEs the guys that track the changes to the files and only recompile what has changed or is it something else? Actually, I have several other questions here, but they may come across rather stupid, so maybe someone could just provide me with a good reference that I can read about how this is handled in Java.
Cheers, Chris.
EDIT:
Ok I obviously didn't clarify myself here, I don't want to know how MSBuild works and I don't have a specific problem with the order in which my projects build or what is being built (Playing with project settings is not granular enough for me).
What I wanted to know is what the mechanism that allows Java projects to do partial recompilation at the file level.
From my understanding it is now clear to me that Java compiles each .java file to a .class file (in some intermediate form) then all class files are archived together as a Jar file. Additionally, most IDE support this file level compilation each time a file is saved, and some even support unit test execution on each save (big time saver IMO)
Now as far as .NET is concerned, I believe that the compiled dlls aren't partitioned at this level and instead contain ALL the IL for ALL compiled classes in the project as a single file (Let me know if this is wrong).
So the question here was what options are there for us to get something similar in the .NET world, namely for executing unit tests. The only thing that I can think of is to have VS keep track of class level dependencies and have small temporary assemblies built that hold all dependencies required to execute the test. Any other suggestions welcome.