First of all, it's not clear how you ended up having so many projects with dependencies, but without a solution file. Let's say you got bad legacy from previous developers, no matter.
First, you can find out how the solution file is structured:
http://msdn.microsoft.com/en-us/library/bb165951%28v=vs.90%29.aspx[
^].
It should be enough to put projects together in a solution file. Some simple experiments can help to find out the detail. The format is simple enough. The only problem is: to best of my knowledge, it is not standardized.
Now, projects and their dependencies. From your description it is not 100% clear if you have compiled projects or not. So, first, I'll quickly explain how to use compiled assemblies to find out their dependency. You should load each assembly in your program using
System.Reflection.Assembly.LoadFrom
and find out what assemblies are referenced using
System.Reflection.Assembly.GetReferencedAssemblies
. It will return an array of the instances of
System.Reflection.AssemblyName
objects, and, for each assembly name, compare it with assembly name of each of the other assemblies you got on output. If an assembly file is loaded, you can find assembly name from
System.Reflection.Assembly.GetName()
, if not — by using the static function
System.Reflection.AssemblyName.GetAssemblyName
to find an assembly name by a file name. Please see:
http://msdn.microsoft.com/en-us/library/system.reflection.assembly.aspx[
^],
http://msdn.microsoft.com/en-us/library/system.reflection.assemblyname.aspx[
^].
This way, you can get the dependencies between available assembly files. Note that in this approach we never used the location of the files on the file systems, we compare only the assembly names, which are not strings but the relatively detailed structures, especially if they are
strongly named. Also note that for not strongly named assemblies, you can face the situation when you cannot find out correct dependency. Some projects are unrelated. If someone gave two different assemblies identical names (which is more or less likely if assemblies are not strongly named and extremely unlikely if they are), it won't guarantee you correct dependency.
But, from your description, it's more likely that your projects are not compiled. This is more difficult situation, but solvable, because assembly references are prescribed in the project files. If all your files comply with MSBuild project file standard, you can read those project files and find out references. It will give you dependencies. For this approach, you have comprehensive API from Microsoft, and the project file format is well standardized and formally documented.
Please start here:
http://msdn.microsoft.com/en-us/library/gg145008%28v=vs.110%29.aspx[
^],
http://msdn.microsoft.com/en-us/library/dd393574%28v=vs.110%29.aspx[
^],
http://msdn.microsoft.com/en-us/library/0k6kkbsd%28v=vs.110%29.aspx[
^].
—SA