views:

132

answers:

1

Hi there,

I'm currently in the process of researching the best development and deployment practices for our team. We have a load of similar code that we're going to start importing into a library of shared assemblies for use across our suite of (web & win) applications. I'm starting to get a clear idea of where I think we should be heading. I'll no doubt have more questions as this refining process progresses.

I'm drawn to the elegance of the structure laid out in W Craig Trader's answer to this question. We're using TFS rather than SVN but the approach applies just as well. Using this approach each dev will have a local workspace containing the latest shared assembly for each major version. Each of these assemblies will be exactly those to be deployed in the target host's GAC.

Each member of the dev team is free to layout their machine as they feel most comfortable so the directory containing the assemblies to link to during development could easily change from dev to dev. We don't want to store the assemblies in the GAC of the devs' machines. And don't want each dev to have to update the references each time they check a project out or in.

So my question is: is there a way to configure a folder to act like a system-wide assembly store a la GAC? Or is there a way to configure VS2008 to search for assemblies in a particular location?

Going forward we'll configure automated builds/CI, in which case we can fix these things, but in the interim the builds will take place on an individual dev's machine. But even with server-based builds, each dev will want to reference the correct assembly for intellisense and test builds.

Any thoughts or suggestions welcome.

Thanks, Dan

Following some internal discussion is seems we may settle on a fixed location on each Dev's machine. This still doesn't sit well from a personal work space p-o-v but it's the safest approach.

The alternative is write a client side TFS event listener which can augment a project file on check-out and sanitize it on check-in. But I'm not sure how safe that would be.

Cheers, Dan

+1  A: 

At my previous job all developers had a R:\ drive which contained all the shared assemblies. With a script the assemblies on the drive were kept up to date by copying them from a network share.

Gerrie Schenck
Thanks for your response, Gerrie. I did consider shared drives as a possibility. But I'm not a fan tbh. It's something else to go wrong, its more resources required on the server. And something about /referencing/linking/binding across the network doesn't sit well. Now most of those are superstitious rather than technical concerns but I'd rather we can get to a solution that will allow each dev to work disconnected on their laptops.
Dan Kendall
This R:\ drive isn't a network drive, but a local drive where shared assemblies are copied to. This allows disconnected development. I wasn't a huge fan too back then, but it worked.
Gerrie Schenck
Hmm, ok. Basically we'd be enforcing a layout on the dev's machine by the back door. I don't think it'd fly. Thanks for the thought though.
Dan Kendall
Hi Gerrie,I think we'll go with a fixed C: location which is, in essence, the solution you outline.
Dan Kendall