The Author Online Book Forums are Moving

The Author Online Book Forums will soon redirect to Manning's liveBook and liveVideo. All book forum content will migrate to liveBook's discussion forum and all video forum content will migrate to liveVideo. Log in to liveBook or liveVideo with your Manning credentials to join the discussion!

Thank you for your engagement in the AoF over the years! We look forward to offering you a more enhanced forum experience.

chillax (1) [Avatar] Offline
#1
I really like the book in the way that it has forced me to reevaluate how we build, test and deploy. I think it's great--and building every solution from source everytime is (in theory) fantastic.

The only bit of head scratching which still remains is the nested project references. Your example of laying out the code for an assembly and then importing it via svn:externals is great, but unfortunately too simplistic for it to be considered real world. You have a single assembly referenced by two separate assemblies. Let's say, instead, that you have assemblies A, B and C and another called Utilities. You could also substitute the source code of log4net if you don't like my ref to Utils.

A references Utils
B references A and Utils
C references A, B and Utils

so, when I checkout A, I have:
A/
A/build.proj
A/A.sln
A/src/A.csproj
A/lib/Util/src/Util.csproj

and I reference the Utils in my A.csproj via $(SolutionDir)libUtilsrcUtil.csproj

Now, in project B I have:

B/
B/build.proj
B/src/B.csproj
B/lib/A/{as above}
B/lib/Util/src/Util.csproj

So, now when we do a checkout, we are getting Utilities in both the checkout for A and for B, we have to manually edit the project file to use these MSBuild variables and the story gets continues for C, now having checked out 4 instances of Utils.

SVN checkouts take a long time as do updates and then we also run into a separate problem of setting the build order manually as msbuild doesn't seem to use the same dependency graph as Visual Studio does to determine the build order.

Perhaps I am doing something completely wrong---could you please show me an example of how you would organize a larger project? How do you set your build order?

Thanks, Chris