简体   繁体   中英

How should I organize my c# solution?

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"?

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.

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM