I posted on this topic in another forum a few weeks ago... We can continue here now!
We have developed a semi-hack way of working with Visual Studio and VSS, mostly as a result of an extremely large/complex application and several developers working over VPN connections. Some are overseas. As you can imagine, the performance issues with VSS quickly led to an investigation of Vault.
The semi-hack method I refer to involves breaking the application up into separate solutions, which all build to a common bin\ directory. This way, one does not need to wait for a gigantic solution with > 100 projects to load up in the IDE. It gives us better responsiveness over VPN connections, and breaks the application up into more managable and logical "areas".
For the curious, yes, many of the solutions have file references to the other solutions instead of project references. When the handling of this was fixed (read: "improved") in the 2003 version of VS, we were home free. It is now a normal way of working.
A new developer (or an existing one with a new machine, etc.) begins work, they use Open From Source Control in the IDE on the "top" level solution. It contains very few things, but one is a build batch file. Once they have retrieved this solution, they can do a recursive Get Latest from the VSS explorer (outside the IDE). This also retrieves all of the "sub-solutions" as a side effect. Followed by invoking the build batch file, the developer is then good to go.
It beats the heck out of doing Open From Source Control on every solution (there are lots of 'em!). And it all seems to work using VSS and SOS, interestingly enough.
But Vault doesn't like me doing this very much. It complains about the binding information, you likely know the message I refer to. I sort of hoped I could manually give it an appropriate mssccprj.scc file for each sub-solution; this is actually fairly easy to do in our environment.
I know it (Vault) doesn't inherently support this sort of arrangement, but unfortunately, we ended up developing a very large app and style of work around this. So I'd like to see what I can do to get it to fly. Otherwise we may have to trade our nice Vault licenses for SOS licenses.
My first thought is using a batch/command file, similar to the build one that we use. If it can somehow invoke an Open From Source Control command, it could certainly provide all the needed parameters, since it is dealing with known directory and repository structures.
This would be the most "pleasant" way, but I haven't yet been able to make it happen. The File.OpenFromSourceControl command doesn't take any arguments, so invoking it from a command prompt can only bring up the expected dialog.
I am not adverse to writing code to call yours, if that's what it takes. We are just getting going with the VSIP program.
Thoughts? Anything I can do to man-handle Vault into dealing with our mega-application's nested solutions without having to open each one individually in the IDE?
I can set you up with a scaled-down example of what's being done if needed.
Best Regards,
Andy
Nested Solutions in Visual Studio 2003
Moderator: SourceGear
-
- Posts: 14
- Joined: Tue Apr 13, 2004 8:49 am
- Contact:
I wish I had definitive answers for you, but I think we'll have to muddle through this together, since I'm not sure how to accomplish what you want.
I don't think simply calling our IDE integration DLL will work very well - the calling sequence from VS is very complex, and at times seems random, and you might not have all the info you need. However, it is written to the MCSCCI spec, so it remains a (remote) possibility.
One thing to try would be: Do the Get from the GUI and the Open from the IDE to different working folders, and then do a file by file comparison, and see what is different, and then see if those differences can be resolved with scripts.
Let me know about the results from hand editing the mssccprj.scc file, and we can figure out the next step from there.
Have you tried this? This is a good suggestion - the mssccprj.scc is the major difference between doing a Get from the IDE vs the GUI. However, there might be other binding information that is stored in either the .sln or project files.I sort of hoped I could manually give it an appropriate mssccprj.scc file for each sub-solution; this is actually fairly easy to do in our environment.
I don't think simply calling our IDE integration DLL will work very well - the calling sequence from VS is very complex, and at times seems random, and you might not have all the info you need. However, it is written to the MCSCCI spec, so it remains a (remote) possibility.
One thing to try would be: Do the Get from the GUI and the Open from the IDE to different working folders, and then do a file by file comparison, and see what is different, and then see if those differences can be resolved with scripts.
Let me know about the results from hand editing the mssccprj.scc file, and we can figure out the next step from there.
-
- Posts: 14
- Joined: Tue Apr 13, 2004 8:49 am
- Contact:
Seems that it works just fine. I missed something the first few times I tried it - probably the solution name. I think I only changed the location.Let me know about the results from hand editing the mssccprj.scc file, and we can figure out the next step from there.
Doh!
It (Vault) doesn't try to check out projects and solutions, change solution GUIDs, none of the things I experienced before. It appears to be perfectly happy with this particular approach!
So, now I can simply write a small utility to glom the repository information from the "base" mssccprj.scc, and use it to create any missing ones in the tree of sub-solutions.
If I use a batch file for the recursive Get Latest, followed by the utility, I am good to go.
Thanks a million for helping me think out loud. I am very pleased that I can finally toss VSS.
Best regards,
Andy
-
- Posts: 14
- Joined: Tue Apr 13, 2004 8:49 am
- Contact:
Another brief question... Does it matter whether I create entries in mssccprj.scc for project files?
It doesn't seem to. I am only putting solution files in here, but I have noted this difference from what Vault does when creating these files itself.
My guess would be that in the absence of an entry for a VS project, it is assumed to be bound to the same Vault project as the VS solution.
Ugh, say that real fast 3 times!
Best Regards,
Andy
It doesn't seem to. I am only putting solution files in here, but I have noted this difference from what Vault does when creating these files itself.
My guess would be that in the absence of an entry for a VS project, it is assumed to be bound to the same Vault project as the VS solution.
Ugh, say that real fast 3 times!
Best Regards,
Andy