问题
I have three projects in my C# 4 solution.
- MooDB: Has my domain objects in, NHibernate mappings, presentation classes.
- Data: Has my data access layer classes (using NHibernate)
- Test: Has my test classes
Here's a screenshot:
I've noticed that I've got app.config
and hibernate.cfg.xml
in my Test
project. This does seem right. I don't have an app.config
in my Data
project which is a problem because I want to use log4net
in my Data
project but I can't configure it if there's no app.config
there.
What's the best way to set up my solution? Should there be an app.config
for each project or for the solution as a whole? Do I need one for my Test
project? Have I organized it according to "best practise"?
回答1:
I usually see config files at the highest layer; which is usually the UI or Test.
This makes sense (to me at least), because the application is directing the data layer to which repository it should be fetching the data from. Your test layer is probably going to go to a different place than your production application; so having config in the Data project wouldn't make much sense to me... it's the top layer that's "configuring" the bottom layers.
回答2:
If you want a single place to make config changes, you can config files in your main project and use post-build events to copy the resulting output files to the bin folders of your other executable projects.
You need to consider whether the configuration that you use in your main application is the same as the one you want to use in your unit tests though. If not, then separate config files are absolutely ok.
来源:https://stackoverflow.com/questions/8853519/how-should-i-organize-my-c-sharp-solution