I'm working with a pretty big solution in Visual Studio consisting of over 130 projects (don't ask).
It has around 40 different solution configurations, so only subsets of the solution are built at a time. Even if only building around 25 projects, it still takes around 30 seconds to 1 minute to do an incremental build on a machine with an SSD.
This is an old solution, so it grew over time and it's likely some things are degraded by now, but after enabling detailed build logging I see the following logged on each build:
Dependency "AWSSDK, Version=1.0.9.0, Culture=neutral, PublicKeyToken=cd2d24cd2bace800".
Resolved file path is "C:\Program Files (x86)\AWS SDK for .NET\bin\AWSSDK.dll".
Reference found at search path location "{AssemblyFolders}".
For SearchPath "aaaaaaaaaaaa\bin\Debug".
Considered "bbbbbbbbbbb\bin\Debug\AWSSDK.dll", but it didn't exist.
Considered "bbbbbbbbbbb\bin\Debug\AWSSDK.exe", but it didn't exist.
For SearchPath "{TargetFrameworkDirectory}".
Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\AWSSDK.dll", but it didn't exist.
Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\AWSSDK.exe", but it didn't exist.
For SearchPath "{Registry:Software\Microsoft\.NETFramework,v4.0,AssemblyFoldersEx}".
Considered "C:\Program Files (x86)\NUnit 2.5.2\bin\net-2.0\framework\AWSSDK.dll", but it didn't exist.
Considered "C:\Program Files (x86)\NUnit 2.5.2\bin\net-2.0\framework\AWSSDK.exe", but it didn't exist.
Considered "C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\AWSSDK.dll", but it didn't exist.
Considered "C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\AWSSDK.exe", but it didn't exist.
Considered "C:\Program F开发者_JAVA技巧iles (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v4.0\AWSSDK.dll", but it didn't exist.
...
Required by "bbbbbbbb\bin\Debug\xxxxxxxxx.dll".
Found related file "C:\Program Files (x86)\AWS SDK for .NET\bin\AWSSDK.xml".
This reference is not "CopyLocal" because it's registered in the GAC.
This goes on for at least a hundred more paths.
AWSSDK is referenced by a core library of ours which acts as a facade for it, every other project that references our facade then repeats these messages. The facade has the library referenced with Copy Local: True, but it seems to be in the GAC and not coming with our dll to bin folders.
There are lots of other dependencies outputting the same messages, not just this one.
It finds it eventually, but I can't imagine this is good on hard drive seek times and it likely contributes to the build times negatively.
Googling this didn't turn out any relevant information.
Edit: Ok, I narrowed the slow build issues mainly to Visual WebGui integration in Visual Studio. I posted my findings here: http://visualwebgui.com/Developers/Forums/tabid/364/forumid/56/postid/50540/scope/posts/Default.aspx
Still, it would be interesting to know how to help MSBuild not consider that many paths and find stuff faster. Though, a SSD helps tremendously.
I have a similar problem with my projects. Not sure if it will help you but you might give it a try. Read my update at the bottom of my question here: Publishing my web application can take long time to accomplish because of the .suo file
精彩评论