At work, we use/develop a LOT of MS Access apps.
Whenever the business has a significantly different problem to be solved, a new MS Access project is started.
As such, although these projects are solving fairly different problems, they may actually use very similar code in parts of each project. There are only so many ways you can extract customers from the same database, right? Or perhaps, many different projects need to work on a list of customers who we have had returned mail from. So, each time we start a new project, we have written the code to do pretty much the same thing that has been done previously.
Obviously, some way of "centralising" this functionality would be very useful. Say the database schema is changed slightly, we don't want to have to go and update every single MS Access app. What would be a good way to do this? Perhaps many people will say "First of all, do away with all the MS Access apps!" Of course, it wouldn't be that easy to replace all our existing MS Access apps, so it would be nice it the centralised functionality could be somehow consumed by MS Access as well. If not, I would still appreciate answers which would not work with MS Access as well.
Also, the solution would have to be in .NET as we are a .NET shop.
EDIT
We are using .NET 3.5.
References to .NET 4.0 would not be useful at this stage.