How to setup a new solution

Introduction

In this post I'll present a possible setup for a .NET solution which respects (as much as possible) the following aspects, patterns and software engineering practices

In most of the samples presented in this blog I'll adhere to this kind of solution setup (e.g. here and here)!

The solution should have as few external dependencies as possible. All external libraries (of course we don't count the .NET framework here) on which the solution is dependent should be (if possible) part of the solution tree. Then you can always (if you have your solution tree under source control -- and you definitely should!) check out the complete solution tree on any machine (e.g. on the build server or on a new developer machine) and just build the solution and run the unit tests without any further manual intervention needed.

Each project of the solution has a corresponding test project where you implement all your unit tests (and/or integration tests, acceptance tests, stress tests, etc.) for the respective project. So, if you have a project in the solution called Domain you should automatically have a additional project in the solution which you might call Domain.Tests.

Separation of Concern (SoC) suggests us to split the whole solution into several projects. I often have at least 3 types of projects. In a typical WinForms based application these might be

  • Domain - contains the domain model with it's domain entities, services, factories and repository interfaces
  • DataLayer - contains the NHibernate XML mapping files and the implementation of the repositories
  • Application (or PresentationLayer) - contains the application or presentation logic, the application shell, the views, presenters and/or application controllers

Of course each of those projects has a corresponding Tests project.

Depending on the complexity of the solution there might be even more projects.

Normally I have a Dev folder on one of my (local) hard disks. The Dev folder has at least two sub-folders OSS and Projects. In the OSS folder I have a copy of the source or binaries of all open source software I use in my projects. As you can see below I have downloaded Castle, NAnt, NHibernate, NUnit and the Rhino Tools.

 image

The green check marks on Castle, NHibernate and Rhino Tools show that these folders are under source control (SVN in this case) and that I have the most recent version of the source.

In the sub-folder Projects I put all the solutions we develop for our customers.

Sample Solution Structure

Now let's have a look at the structure of a sample solution. Let's assume that it's a WinForms based application and call the solution DemoSolution.

image

In the Projects folder I create a sub-folder with the same name as the solution, in this case DemoSolution. In this solution folder I create at least the two sub-folders SharedLibs and src.

The folder SharedLibs contains all the external assemblies my solution depends on (e.g. NHibernate, Castle, 3rd party WinForm Controls, etc.). The content of the SharedLibs folder varies depending on the needs of the solution. In the sample solution I have presented here we have the following files in this folder

image

Important: Each project of the solution which references one or several of those external libraries points to this SharedLibs folder! That is: never reference an assembly from the GAC (except the .NET libraries of course).

The folder src on the other hand contains our own source code for the solution. The Visual Studio solution file *.sln I put directly in the src folder. Normally the VS solution has the same name as the solution folder (in this case DemoSolution.sln). For each project of the VS solution I have one sub-folder. In this case we have 6 projects in the solution, three of them containing the code which makes up our application and the other 3 projects containing the code of the corresponding (unit-) tests.

Summary

I have presented you a possible structure for a solution you develop. This structure tries to satisfy various requirements implied by commonly used patterns and software engineering practices.

Blog Signature Gabriel .

Print | posted on Sunday, April 06, 2008 8:18 AM

Comments on this post

# re: How to setup a new solution

Requesting Gravatar...
great series - I have attempted to apply the principles above to the example cited at the beginning, and I have a couple of questions:
1. does the .cfg.xml file belong in the Application or DataLayer projects?
2. I have the Person.hbm.xml file in a folder called Mappings in the DataLayer project - all tests fail unless I add a mapping item to the cfg file, is this required or am I doing something wrong?
Left by Craig on Apr 16, 2008 9:03 AM

# re: How to setup a new solution

Requesting Gravatar...
@Craig:
1) good question. Normally it belongs to the data layer since the application layer wants to be agnostic of any persistance details. It is important that in the end this configuration file is located in the application directory (that is the folder where all your binaries are located)
2) you have to set their property to "embedded resource" and ensure that you add the assembly in which you have defined the mappings (i.e the hbm files) to the configuration when creating the nhibernate session factory. In the mapping files you must provide the fully qualified name of each class
Left by Gabriel Schenker on Apr 26, 2008 7:23 AM

# re: How to setup a new solution

Requesting Gravatar...
This is great advice! A couple things I would add:

* do you really need multiple test projects? in my experience I've found that just having 1 test project organized into folders provides me what I need, and it makes the build a lot faster.

* I like to differentiate the ShareLibs into /libs and /tools, /libs are libraries that we depend on at runtime and ship with our deliverables, /tools contains things like NAnt, Nunit and other tools that we use during development. This makes it easy to determine "the stuff you need" to deploy to production.
Left by Ben Scheirman on May 06, 2008 5:24 AM

# re: How to setup a new solution

Requesting Gravatar...
@Ben: well, it is certainly possible to have all tests in one single project. This will definitively increase the compilation speed. But on the other hand I like to at least separate the test concerning data access, domain model and presentation layer into distinct projects. That's just personal preferences.

Well separating tools and libs seems also a good solution to me. Again SharedLibs are my personal preferences.

There is always many solutions for a given problem...
Left by Gabriel Schenker on May 06, 2008 10:45 PM

# re: How to setup a new solution

Requesting Gravatar...
How different would you set up your solution if your project was an ASP.NET project as opposed to a WinForms project? Would there be much difference besides just having a Web Application project?
Left by todd brooks on May 07, 2008 9:50 AM

# re: How to setup a new solution

Requesting Gravatar...
@todd: not really! The Domain and DataLayer will be the same since there is nothing presentation layer specific in these two projects. So the only thing that will change is the application project. Possibly you will have a 'Web' project at it's place where you place all your view templates, controllers, css, java script, etc. (if you develop say an MS MVC or Monorail Web app)
Left by Gabriel Schenker on May 08, 2008 1:10 AM

# re: How to setup a new solution

Requesting Gravatar...
do you have a project template for vs for your solution? would suggest to create some templates for specific needs.
Left by Rainer Schuster on Sep 06, 2008 10:20 AM

# re: How to setup a new solution

Requesting Gravatar...
Thanks, that's some great advice. Sometimes it can be a little confusing to set up a new project, good to have a resource like this.
Left by heartworm medicine on Oct 07, 2009 3:00 PM

# re: How to setup a new solution

Requesting Gravatar...
Thanks for sharing
Left by Cheap car insurance rates on Dec 06, 2009 7:51 PM

# re: How to setup a new solution

Requesting Gravatar...
With Nhibernate,we can map a domain object to a relational dababase table easily. but how can we implement a Query with multiple tables joined? Will you please give an example? Thanks
Left by best poker online sites on Dec 10, 2009 11:01 PM

# re: How to setup a new solution

Requesting Gravatar...
I like to differentiate the ShareLibs into /libs and /tools, /libs are libraries that we depend on at runtime and ship with our deliverables, /tools contains things like NAnt, Nunit and other tools that we use during development. This makes it easy to determine "the stuff you need" to deploy to production.
Left by Web Hosting on Dec 22, 2009 6:52 AM

# re: How to setup a new solution

Requesting Gravatar...
tools contains things like NAnt, Nunit and other tools that we use during development. This makes it easy to determine "the stuff you need" to deploy to production.
Left by pandora jewelry on Dec 24, 2009 11:54 PM

# re: How to setup a new solution

Requesting Gravatar...
Thanks, that's some great advice..
Left by health coverage on Jan 08, 2010 6:32 AM

# re: How to setup a new solution

Requesting Gravatar...
I like when people are trying to challenge me, and I appreciate that you maintain a fairly active dialogue with your readers. Couldn't agree any more. Your advice is great.
Left by Accounting Software on Jan 11, 2010 6:37 PM

# re: How to setup a new solution

Requesting Gravatar...
Hey I love your style I will subscribe for your feed please keep posting!
Left by Miami Computer IT Support on Jan 11, 2010 6:38 PM

# re: How to setup a new solution

Requesting Gravatar...
Search for issues and defects here or find a specific issue. Always search first before reporting an issue to avoid duplication.
Left by Online Civil engineering degree on Jan 11, 2010 8:00 PM

# re: How to setup a new solution

Requesting Gravatar...
it sounds like it was an interesting talk. i really don't know what you mean by "beta" but i guess it's a sign i need to take some refresher courses!
Left by Nutritional Health Science degre on Jan 11, 2010 8:01 PM

# re: How to setup a new solution

Requesting Gravatar...
I don't always notice comments here.)
Left by Law and legal studies degree on Jan 11, 2010 8:01 PM

# re: How to setup a new solution

Requesting Gravatar...
I want to thank everyone who attended the "Being a Better Beta" workshop and particularly my co-panelists yourlibrarian and jlrpuck. In the session,
Left by cyber crime degree on Jan 11, 2010 8:02 PM

# re: How to setup a new solution

Requesting Gravatar...
The only caveat is that the closed workshops needs to have a room host who is already on the list to be in the workshop.
Left by Online Policing degree on Jan 11, 2010 8:02 PM

# re: How to setup a new solution

Requesting Gravatar...
ClassicPracticalJokes.co.uk is a UK site bringing you a fantastic collection of classic practical jokes and tricks.
Left by Classic Practical Jokes on Jan 13, 2010 6:31 PM

# re: How to setup a new solution

Requesting Gravatar...
i appreciate the info
Left by make money online on Jan 16, 2010 1:12 PM

# re: How to setup a new solution

Requesting Gravatar...
This is, of course, if your warranty is up. Also, you're completely wrong about the towel trick. Its been working for me for 2 days now (but i didnt have RROD, i only had the bottom right quadrant red, Error E74). But, NICE COOLING SYSTEM!
Left by jeux de blackjack on Jan 17, 2010 10:52 PM

# re: How to setup a new solution

Requesting Gravatar...
American Food UK is a UK site selling a great range of American Food favourites in the UK, with same day dispatch and fast delivery on all orders.
Left by American Food and Sweets on Jan 21, 2010 11:10 PM

# re: How to setup a new solution

Requesting Gravatar...
WOW ClassicPracticalJokes.co.uk is a UK site bringing you a fantastic collection of classic practical jokes and tricks.
Left by pandora jewelry on Jan 29, 2010 2:45 PM

# re: How to setup a new solution

Requesting Gravatar...
This setup really very helpful for me! Thanks a lot!
Left by color laser printer reviews on Feb 04, 2010 8:29 PM

# re: How to setup a new solution

Left by ugg boot on Feb 08, 2010 7:08 PM

# re: How to setup a new solution

Left by custom essay writing on Feb 22, 2010 10:10 PM

# aion gold

Requesting Gravatar...
Do you knowaion gold?if you play the online game,you will knowcheap aion goldis the game gold. you can come here and spend a little money to boughtbuy cheap aion gold.Quickly come here.
Left by aion gold on Feb 24, 2010 1:30 PM

# discount ed hardy women long sleeve shirts sales online

Requesting Gravatar...
YS0225A5 If you think you are beaten, you are! If you think you dare noted hardy clothing, you don't! If you want to win but thin you can't, It's almost a cinch you won't ed hardy hoodies! If you think you'll lose,you're lost! For out of the world we find.Success begins with a fellow's will,It's all in a ed hardy shirts state of mind! Life's battles don't always go.To the stronger and faster ed hardy coats man,But sooner or later the man who wins,Is the man who thinks he can! When You Belive http://www.edfashionclothes.com/,Many night we've prayed!With no proof anyone could hear!In our heart a hopeful moncler online store song,we barely understood!Now we are not afraid !Although we know there's much to fear!We were moving the moncler jackets mountian long,Before we knew we could!There can be miracles!
Left by discount mens moncler down coat on Feb 24, 2010 9:59 PM

# discount Ugg Broome Boots in chestnut leather online sales

Requesting Gravatar...
YS0225A8 Before there was no reason in the world,As now there is!The moncler jackets course of water was my only course,My repetitions oceans' sough and swell ugg adirondack boots!My seasons pleasurable,Before there was no reason in the world,As now there is ugg broome boots!To measure time from sleep I rose to sleep,To measure space I pastured on surprise http://www.edhardy-buy.com/,O meadows of resemblances,I was the grove on whose mosaic floors,The moncler online seeds of otrwise were spent,My gods had many arms,I was the Caesar of unmarshaled grass ugg boots!Faustus in the branches,My first ambitions were my sorrows long!Before there was no reason in the world,As now there is!
Left by discount womens moncler jacket on Feb 24, 2010 11:02 PM

# discount air jordan shoes 23 sales online

Requesting Gravatar...
YS0225A7 when the sun hugs the moon, the sky clses her eyes.when the sun hug the moon the sea quiet her jordans shoes.when the sun hugs the moon,the forest stops her susurrus.when the sun hugs the nike sb dunk high,the desert hodlds her breathe.Thousands of years's waiting is only for this nike acg shoes moment.Never be disappointed.Never give up.It hax been sucha long me.At nike air max 2003 this momentmeet each other in course of time.Do not cry,Moon.I guard you forever.Cause you are in my life,everyting has its meaning.The fascinating Diamond Ring,is the ring i give you,May it give you warm http://www.nikejordanshoes2sell.com/ threduce your tears.Do not cry,Sun,I will be there with you forever/Meeting you has given me precious memeory.The resplendent Baily Beads.is the gem i give you .May i give you cheap air jordan 22 shoes strength, shine in your morning.Meet soon and part soon.It makes peop;e retrospect in spite of lasting a few minutes.A long times waiting is coming.Don't know when the next meeting is .When the sun hugs the Moon. the Moon hugs the sun as well Hugging tightly,regian the lost nicety.
Left by discount nike air max shoes sale on Feb 24, 2010 11:06 PM

# discount air jordan shoes 25 sales online

Requesting Gravatar...
YS0225A6 When you belive,Though hope is frail.It's hard to kill,Who knows what cheap prada shoes miracles,You can achieve,When you belive! Somehow you will,

You will when you belive new nike air max!And in this time of fear, When prayer so often proves in vain, Hope seems like the http://www.nikeaf1jordanshoes.com/summer birds. Too swiftly flown away, And now I am standing wholesale gucci shoes here.My heart's so full I can't explain.Seeking faith and speaking women's nike shox words I never thoht I'd say, They don't always happen when you ask authentic air jordan shoes.And it's easy to give in to your fear. But when you're blinded by your pain!
Left by discount mens moncler down coat on Feb 24, 2010 11:10 PM

# discount christian louboutin sandals online sales

Requesting Gravatar...
YS0226A1 That your heart has been broken,Hear the wos,I'm here, my child,;And know your christian louboutin uk angel has spoken.For even in the darkest hour,When all of discount louboutin shoes hope seems gone,They'll give you strength to live your life,And desire to go on.And if your faith in Heaven, Should ever fade away,They'll help renew your christian louboutin boots spirit, And help you find your way.Even though you're ever filled with doubt, About the christian louboutin pumps life you live,Know that they are there to give you All that they can give.For you see, the Father sent them,Because to Him, you mean so much,That He sent them just for you,my louboutin sale friend,And your life, they will touch.They will always be here,They will never leave your http://www.christianlouboutinshoestore.com/ side;And upon their strength and guidance,You always may rely.Take comfort in their guidance, Draw strength from up above,And know that their sweet presence,Is God's precious gift of love.
Left by cheap christian louboutin shoes on Feb 25, 2010 3:32 PM

# discount women's ugg elsey boots 5596 sales online

Requesting Gravatar...
YS0226A2 If I were a boy again, I would practice perseverance more often, and never gve up a thing because it was ugg australia boots or inconvenient. If we want light, we must conquer darkness. Perseverance can sometimes equal genius cheap ugg boots in its results. “There are only two creatures,” syas a proverb, “who can surmount the pyramids—the eagle and the snail.” If I were a uggs sale boy again, I would school myself into a habit of http://www.topsnowboots.com/ attention; I would let nothing come between me and the subject in hand. I would remember that a good skater never tries to skate in two ugg cardy boots directions at once. The habit of attention becomes part of our life, if we begain early enough. I often hear cheap gucci shoes grown up people say “ I could not fix my attention on the sermon or ugg coquette book, although I wished to do so” , and the reason is, the habit was not formed in youth.
Left by cheap ugg upside boots 5163 on Feb 25, 2010 3:39 PM

# discount Women's ugg adirondack boots II sales online

Requesting Gravatar...
YS0226A3 Hold fast to dreams.For if dreams die. Li is a broken-winged bird,That ugg australia boots can never fly.Hold fast to dreams. For when dreams go,Life is a barren ugg tall boots field, Frozen only with snow !You never know until you try; And you never try unless you really try ugg cardy boot. You give it your best shot; You do the best you can. And if you have done everything http://www.uggsnowbootsbest.com/! In your power,and still,The truth of the uggs argyle knit matter is! That you haven\'t failed at all.When you reach for your dreams,No matter what ugg boots they may be,You grow from the reaching;You learn from the trying;You win from the doing.
Left by cheap ugg classic cardy boots on Feb 25, 2010 3:47 PM

# discount reebok nfl jerseys online sales

Requesting Gravatar...
YS0226A4 A true friend is someone who reaches for hand and touches your cheap hockey jerseys heart.There's always going to be people that hurt you,so what you have to do is keep on trusting nfl jerseys and just be more careful about who sport jerseys you trust next time around.Make youself a better person and know who you are discount nba jerseys before you try and know someone else and expect them to know you mlb jerseys on sale.Remember:Whatever happens,happens for a reason.How many people actually have 8 true http://www.nfljerseymlb.com/friends Hardly anyone I know.But some of us have all right friends and good friends.
Left by cheap adiads nba jerseys sale on Feb 25, 2010 3:51 PM

# discount ugg sienna miller boots 5818 sales online

Requesting Gravatar...
YS0226A9 Unwearied still, lover by lover,They paddle n the cold,Companionable ugg australia shoes streams or climb the air;Their hearts have not grown old;ugg coquette Passion or conquest, wander where they will, Attend upon them still ugg adirondack boots. But now they drift on the still water, Mysterious, beautiful; Among what http://www.uggboots4buy.com/ rushes will they build, By what lake’s edge or pool,Delight men’s mbt shoes eyes when I awake some day.To find they have flown uggs classic cardy away?Before there was no reason in the world As now there is I was the bough bent easy by a ugg boots bird I was the vague blue-grazing flock The sleeping and invisible!
Left by cheap women's ugg elsey boots on Feb 25, 2010 3:56 PM

# discount mens air jordan shoes 13 online sales

Requesting Gravatar...
YS0226A10 When you are old and gray and full of sleep,And noding by the moncler jackets fire, take down this book! And slowly read jordans sheoes , and dream of the soft look,Your eyes had once, and of their cheap nike shoes shadows deep;How many loved your moments of glad grace,And loved your beauty with nike air force 1 love false or true; But one man loved the pilgrim soul in you,And http://www.onestop-onlineshopping.com/ loved the sorrows of your changing face; And bending down beside the designer clothing glowing bars,Murmur, a little sadly, how love fled.And paced upon the mountains overhead discount air jordan shoes,And hid his face amid a crowd of stars.
Left by cheap nike air max 90 online on Feb 25, 2010 4:00 PM

# discount louis vuitton damier canvas handbags online sales

Requesting Gravatar...
YS0226A11 Surrounding you are angels,They are there to guide your ath.If designer purses weaesskn overcomes you,They'll give you strength if you will ask. They are your protection.When discount designer bags on sale life seems too hard to bear,And though you feel alone at times, The louis vuitton 2009 angels ... they are there.Their faces may be hidden And their voices you might not hear,But they are ALWAYS with you,Through your laughter or your tears.http://www.handbags4buy.com/ They'll walk along beside you,They'll guide your leather handbags steps along the way, They'll comfort you and hold you,Protect you dior handbags night and day.They'll hold to your hand tightly ,They'll not ever let it go,And they'll gently lead you cheap designer handbagsforward,Taking each step very slow.For even as you slumber,They watch closely over you;They are there beside you. In each and every thing you do.
Left by cheap nike air max 90 online on Feb 25, 2010 4:07 PM

# re: How to setup a new solution

Requesting Gravatar...

wedding dresses,wedding gowns,bride dresses,bridesmaids dresses,evening dresses,bridal gowns,flower girl dresses
Wedding Gowns
Formal Gowns
Cocktail Gowns
Find the wedding dress designer and wedding dress that's right for you! Browse dresses from
Bridesmaid Gowns
Evening Gowns
View our selection of exquisite, handmade gowns and dresses for your wedding
Wedding Dresses, Wedding Shoes and Wedding Accessories from wedding shop, the UK's finest collection of designer wedding dresses.
Use the wedding dress and
cheap wedding
wedding dresses
wedding shop
h
Left by sbb on Feb 27, 2010 10:12 PM

# re: How to setup a new solution

Left by abercrombie on Feb 28, 2010 9:04 PM

# re: How to setup a new solution

Requesting Gravatar...

wedding dresses,wedding gowns,bride dresses,bridesmaids dresses,evening dresses,bridal gowns,flower girl dresses
Wedding Gowns
Formal Gowns
Cocktail Gowns
Find the wedding dress designer and wedding dress that's right for you! Browse dresses from
Bridesmaid Gowns
Evening Gowns
View our selection of exquisite, handmade gowns and dresses for your wedding
Wedding Dresses, Wedding Shoes and Wedding Accessories from wedding shop, the UK's finest collection of designer wedding dresses.
Use the wedding dress and
cheap wedding
wedding dresses
wedding shop


fds
Left by sbb on Mar 02, 2010 8:08 PM

# re: How to setup a new solution

Requesting Gravatar...
i appreciate the info.
Left by ucvhost on Mar 06, 2010 2:53 AM

# ugg boots

Requesting Gravatar...


they are very good and useful!!!
ugg outlet
cheap uggs
nike shoes
wholesale watches fdt
Left by ugg boots on Mar 07, 2010 5:29 PM

# re: How to setup a new solution

Requesting Gravatar...
Good job! THANKS! You guys do a great website, and have some great contents. Keep up the good work.
best regards,
thailand hotels
Left by Thai Restaurant on Mar 07, 2010 8:33 PM

# re: How to setup a new solution

Requesting Gravatar...
It’s hard to find knowledgeable people on this topic, but you sound like you know what you’re talking about! Thanks Don’t stop writing, you’ve given me lots of good info! Youtube to MP4 Converter
Convert PDF to image
e
Left by powerpoint on Mar 08, 2010 2:20 PM

# re: How to setup a new solution

Requesting Gravatar...
My hair is just over my ears. I like two kinds of hair styles most. Firstly, use the ghd straighteners to make

the hair in nature and bouffant style. Divide the hair into several portions. Use ghd pink to roll them inside

towards your ears. Several minutes later, the hair will roll neatly inside in the branches. Secondly, the active and energetic style with the roll of the

direction in the opposite direction can be made similarly with the formal procedure. All you need to do is to roll the hair outward instead of inward

with ghd mk5.
It is so simple that you can have your own charming short hair style with GHD straightener uk. Besides the new hair styles,ghd straighteners can help you with the puffy hair after you get up which is the annoying thing for many short hair

girls.
So as long as I have the good tool of ghd pink, no matter what the fashion trend goes of hair styles, I will

stick into my favorite neat short hair.

your arctical is so amazing,keep on it!
You are doing a good job!keep it on!
I have bookmark it!hope for your arctical more!
My hair is just over my ears.
It is very good of these notebook.I like to see them.
Left by ghd straighteners on Mar 09, 2010 3:36 PM

# re: How to setup a new solution

Requesting Gravatar...
Whenever I hear friends talking about mbt, my feeling would always be a painful mixture of envy and

helplessness. As a matter of fact, I have long been craving about possessing a pair of MBT shoes. To a girl of low stature as me, a pair of mbt shoes could make me seem more slender or least won't be dwarfed by other girls. But its high price always

makes me feel hard to afford due to my restrained financial conditions.
But not long ago, a friend of mine sent me a pair of mbt shoes sale which thrilled me up for several days.


That is because it is not good to fight a strong conservative with a third party.
Perry only supported the tea party and got on the band wagon so he could "petend" conservatisn.
I'm only regretting that I didn't buy one earlier.
It's not until then that did I realize each penny for it is well paid. Indeed, it really deserves such a high price. I'm only regretting that I didn't

buy one earlier.
Left by ghd pink on Mar 09, 2010 3:41 PM

# re: How to setup a new solution

Requesting Gravatar...
=Firstly I will talk about UGG boots' Origin. cheap ugg boots has been created in Australia during the First World War, by the Australian pilot, who wrapped in sheep's clothing with two feet into the shoes to protect from the cold weather. Then it gradually became popular in Australia. Initially the name came in, called ugg boots sale which means ugly shoes. Later, Australians nicknamed it ugg boots deutschland. Until 1994, an American registered the fucong lingdaotrademark of UGG Australia, and began to produce UGG boots in a large scale. Today, ugg Australia is a very popular brand in the world.
Left by cheap ugg on Mar 10, 2010 6:50 PM

# re: How to setup a new solution

Requesting Gravatar...
I was very pleased to find this site.I wanted to thank you for this great read!! I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you post.
cheap vps | cheap hosting
Very nice information keep it up.
Left by ucvhost on Mar 10, 2010 11:47 PM

# re: How to setup a new solution

Requesting Gravatar...
I'm setup but this don't work, let me know why?
Left by free ringtones on Mar 11, 2010 8:16 AM

# re: How to setup a new solution

Requesting Gravatar...
Why?
Left by rolex on Mar 11, 2010 2:37 PM

Your comment:

 (will show your gravatar)
 
Please add 3 and 5 and type the answer here: