tags:

views:

57

answers:

2

My current issue is I have a DLL which has a class I use as an abstraction for my Database Mappers. I use this DLL in all my projects (including other class libraries/dlls) that access the database. My issue is that every time I update my Data Mapper dll I have to updating it in all the other dll's I am using in my main project as well (right now this means 3 other class libraries). When I am trying to debug the dll library on my main project this becomes a lot of work for each small change. Is there a better way to approach this?

Thanks.

+2  A: 

If I've understood the question properly, here are two possibilities:

  • Reference the project source rather than the assembly in your various projects.
  • Create a post build task that copies your shared assembly dll to a central location that your other projects can access it from. Something like:

    copy "$(TargetPath)" $(SolutionDir)SharedAssemblies\$(TargetFileName)

grenade
A: 

From the wording of your question it seems that you're linking into a mapper like LINQ and using the classes that it generates are your model classes, thus resulting in changes all over when you recompile.

If this is the case: You might want to consider creating your own models and mapping them to the data mapper classes generated. Look at something like the Repository Pattern. Then you basically create a layer above your data mapper, and your application uses that layer.

If this is not the case:

  • Don't reference the dll, reference the project.
  • Compile all your assemblies into one, or you can use something like ILMerge to make one assembly as well.
MunkiPhD
For compiling assemblies into one, see http://stackoverflow.com/questions/1878807/visual-studio-2008-creating-single-dll-from-solution-with-many-projects
CAD bloke