This is the way Visual Studio works. If you create the Virtual Dir yourself, then you create the solution, you can put it in the virtual dir.
If you have VS create the virtual dir when you create the solution, then it doesn't alwys put the solution file where you expect it.
It really doesn't matter what folder this .sln file goes in. It's basically a list of project files, and the project files have a list of other files.
Don't be afraid of namespaces. The concept is easy, and it doesn't have any definite tie to directories, although lots of people like to organize directories according to namespaces. Think of a classroom that has 2 students named John. The teacher says "I'll have to use your firstname and lastname so you will know who I mean when I say your name".
Maybe you have a lot of projects that have a class named ProcessXML. Now, maybe you want to create an instance of this handy class in a new project. How does the compiler know which of the ProcessXML classes you want to create? It knows because of the namespace. You might want the ProcessXML class from the Acme.Employee namespace. When you create the class you can either specify it as "Acme.Employee.ProcessXML", or you can import the namespace into your project (using for c#, Imports for VB
), and then you can just call it ProcessXML.
Maqny people get confused between a "reference" and the importing of a namespace. The purpose of a reference is to give the compiler the metadata that defines the objects in an assembly. This is used for several things, like intellisense and type checking during the compile. Just because you create a reference to an assembly doesn't mean that you want to import the namespace. You can use objects from an assembly without importing the namespace. If it automatically imported the namespace of every assembly you reference, then you'd have lots of namespaces imported, and there might be naming conflicts. You have to specifically tell the compiler which namespaces you want to import to help avoid the odds of having a conflict.
With my school example, if I "import" the students from 2 or 3 classrooms, then I won't get too many name conflicts. There might be some, but then I could use the first and last name of a couple students and I'm still OK. But, if I import the students from 100 classrooms there will be a bigger chance of having name conflicts, and it will be hard for me to keep the students separate - I don't want to use the fullname of every student.