9

Except my apologies if this has been asked - I couldn't find the match. I have a solution with... 96 projects. I work with 3-4 at a time. Is there a way to filter out, mark as favorite, etc. projects that I am currently interested in? The problem is amplified by the fact that projects are sorted alphabetically and because one of my projects starts on B and another on T, I always had to scroll down and stress my brain while looking for needed thing. Somewhat disappointing. I don't think I used solution folders. Is that the way to go?

Schultz9999
  • 8,717
  • 8
  • 48
  • 87
  • Yeah :) Most of our code base. How to reduce that number is a different story. We don't see a good way because changing some common library requires changes to sources that uses it and if they are in a different solution, one may never notice that a change made breaks something. – Schultz9999 Apr 20 '11 at 17:34
  • How so? What would be different when it comes to detecting breaking changes? You CAN reference the same project from multiple solutions... – Pete M Apr 20 '11 at 17:45

5 Answers5

7

My recommendation would be to create new solutions and just add those projects that you're working with. I'm guessing there will also be other projects they depend on, in which case you can either bring those into your solution as well, or update any references to point directly to the binaries of those other projects.

ataddeini
  • 4,931
  • 26
  • 34
  • If you maintain the existing large solution, you can continue to use it for any continuous/automated builds you have setup as a catchall to ensure you're not breaking stuff. This approach also reduces the memory footprint of VS, which tends to make stuff far more responsive. – forsvarir Apr 20 '11 at 17:38
  • @ataddeini: as I mentioned in my comment to the question, I can do that but while changing the shared source, I can inadvertently break other dependencies that are NOT in my current solution. We do have CI build setup but it would still count as a build break, or dirt on my face :) Besides (don't ask me why) the project dependency chains are quite long (read bad), e.g. P1->P2->P3->P4. So putting P2 in my new solution will require P3 and P4, which may have their own dependencies as well. So I did try that but it was more cumbersome than helpful. – Schultz9999 Apr 20 '11 at 17:49
  • So deal with the dirt on your face. The issue will be caught nearly instantly. Don't put your ego above the most efficient path to delivery. Talk to the build manager(s) about modifying metrics. Also, if you need P1->P2->P3->P4 then you need them. Also, you might want to look at the power productivity tools for studio. The replacement for the solution explorer is absolutely top notch IMO. They might have something for you. – Pete M Apr 20 '11 at 17:51
  • @Pete M: I'd say having a broken build right at your fingertips is more efficient than waiting for the CI build to complete. – Schultz9999 Apr 20 '11 at 17:54
  • Weighed against the inefficiency of of working in a 96 project solution every day? What metrics are you using... ;) – Pete M Apr 20 '11 at 17:54
  • Here's the link for the productivity power tools btw. This is one of the two things I install immediately on an otherwise primed dev box (the other being LINQPad): http://visualstudiogallery.msdn.microsoft.com/d0d33361-18e2-46c0-8ff2-4adea1e34fef – Pete M Apr 20 '11 at 17:57
  • @Pete M: well, waiting for the CI build to complete is 10 minutes. Scrolling down the Solutions Explorer... 10 seconds. BTW, I have to say that I am using VS2008. In VS2010 I can use quick search, which somewhat solves my problem completely. – Schultz9999 Apr 20 '11 at 17:58
  • @Shultz9999: If you're performing a fairly standard checkin-dance (update from repository, peform local build/tests, checkin), then you should be catching build breaks at that point, i.e. before you checkin. It's only when you're actually working on the project that you'd be using the separate solution. Of course our local build is command line based... – forsvarir Apr 20 '11 at 17:59
  • Bah, power tools are no good either then. Many shops I've been in use the split solution approach. Talk to your build manager about it. Having your an entire enterprise worth of assets in one solution is... unusual. – Pete M Apr 20 '11 at 18:02
  • @forsvarir: if I got you right, you suggest building the god solution before every checkin. Yes, that could be a way. I do use Perforce plugin though, using of which for checkins I will have to abandon in this case. – Schultz9999 Apr 20 '11 at 18:02
  • @Schultz9999: That is what I'm suggesting. Whilst it's not the ideal solution (breaking the dependencies would obviously be better), it can be used as a first step towards that and I've certainly found it to have the best effort to benefit ratio. If you measure your local build times and compare it to using the big solution you should notice a difference. Multiply that by the number of times you perform a build in a day... – forsvarir Apr 20 '11 at 18:38
  • @ataddeini: marking this as the answer because it's the only viable approach in VS2008. But it has drawbacks that make me think I won't be using this approach though. – Schultz9999 Apr 20 '11 at 21:58
  • @Schultz9999: Yeah, it sounds like you have a complicated situation that you have to work with. Best of luck. – ataddeini Apr 20 '11 at 22:00
5

Although the original question was asked 2 years ago I would like to suggest a solution.

The free Visual Studio extension Funnel provides load filters for selective loading of project lists. After an initial compilation of all projects (which is required in order to fulfill all dependencies) only the projects which are really required for the current task can be loaded. Load filters can be defined for each aspect of the solution, combined with each other at load time and shared in teams.

digitalme
  • 76
  • 1
  • 3
  • I know Funnel has some fans, so I'm not criticizing the tool, but I think you should really identify yourself as the author of the tool when you suggest it as a solution. – Whyaduck Mar 15 '16 at 16:49
5

You can use solution folders for this.

Solution folders are nothing more than meta folders that just group projects together.

Daniel A. White
  • 187,200
  • 47
  • 362
  • 445
  • 2
    I just tried and that doesn't work OK. The reason is that there are multiple projects that use the same one as dependency. I can't add that dependency to multiple solution folders. – Schultz9999 Apr 20 '11 at 17:30
  • @Schultz9999: Wat. You can create Solution Folders and move Projects into them. I've got all my stuff organized into sub sub sub solution folders. projects => source, projects => Tests, projects => installers, etc –  Apr 20 '11 at 17:40
  • 2
    @Will: you surely can. But what I am saying this. There is P1, P2 and L1, L2. P1 depends on L1 and L2, P2 depends on L2. So I can create a SF1 (solution folder) and move there P1, L1 and L2. I can also create a SF2 and move there P2. But I can't add L2 there because it's already in SF1. – Schultz9999 Apr 20 '11 at 17:46
  • @Schultz9999: True, you cannot add a project to two different solution folders, but that has nothing to do with "dependen[cies]" as you stated. You can organize them better, putting ones that are your favorites into their own folder. That is what is being suggested. Another option you might like is to use the Productivity Power Tools extension. You can filter projects on Open/Unsaved/Edited; you might suggest they add a Favorites option as well in a future release. –  Apr 20 '11 at 18:36
0

Would the "Solution Navigator" from the Productivity Power Tools plug-in help?

It allows you to...

  • Search your solution, all the way down to class members
  • Filter your solution or projects to see just opened files, unsaved files, and so on
  • create multiple instances of the tool window. Each tool window can have a uniquely-scoped view. These views could be focused around a single project, class or file, or even based from search results.
AShelly
  • 34,686
  • 15
  • 91
  • 152
0

I guess one thing that one may suggest is to switch to VS2010 that has more plugins and integral functionality to search and browse faster than in VS2008. Although it still lacks ability to create links to projects which can be placed into solution folders creating many to many relationship.

Schultz9999
  • 8,717
  • 8
  • 48
  • 87