views:

89

answers:

2

I'm looking for some guidance where to store assemblies. This is how our source tree looks like at the moment:

ProjectName
trunk
|--------src (source code)
|--------lib (assemblies needed by every project e.g. NUnit framework, svn external)
|--------tools (tools needed by every project e.g. NUnit executable, svn external)
|--------ThirdPartyAssemblies (project specific assemblies, e.g. log4net)

We've moved some code to a library of our own which is called Utils.dll.

I'm now wondering where to put this library (literally a good name for the folder) and furthermore other libraries that we write in the future.

ThirdPartyAssemblies does not seem like the right place (since it's not from a third party), nor does lib since the assemblies are not needed by every project we create.

+3  A: 

Well you could certainly create a "FirstPartyAssemblies" directory if you needed to - but do you definitely need to "store" these assemblies in the first place? Do they come from a different solution? Can you not just use several projects in the same solution, and let VS pull the assemblies in appropriately? You don't have to have all the projects in the same source hierarchy, of course.

Now in many cases you will want to store the assembly - and potentially version it separately etc - but if you can get away without doing so, it'll possibly make your life easier. It really depends on your situation though.

Jon Skeet
Thanks Jon, "FirstPartyAssemblies" is what I was looking for. You're right it's easier to have certain projects live in the same solution and have VS pull them together. We're already doing that for most of our projects. The question targets a specific assembly which will be referenced by quite a lot of projects (it contains wrapper classer and other helpers) and because it lives in it's own source hierarchy we can't use VS to pull it in automatically.
Timo Kosig
A: 

I wouldn't always put the project in the solution, unless you want to take an open-source approach. That could get messy. I always use the name of the company. Like [CompanyName]Utils. That way, you can further break it down if you need to. Like [CompanyName][Domain]Utils or whatever.

cerhart