In response to a couple of questions:
If I have Project C, which depends on Project B, which again depends on Project A, I need to specify Project A in Project C, even if Project C does not use any types from Project A. Is there a workaround for this?
I do not think this is true in general. You will only need to reference A if B provides some types from A. For example, if a class from B inherits from a class in A, then yes, C will need A, since C needs to know the base class. However, if B 'hides' A behind everything - these are their own classes / interfaces, then C does not need to know about A.
Are there tools that read * .sln or * .csproj and show me which assembly links which assembly?
You can get this information directly from assembly metadata. Reflector is a great tool for this. It was free, but it looks like they started charging for it 4 days ago (bummer!)
Other 2 questions about visual studio issues I am not familiar with this. But overall, I am surprised that you are getting a version error. Are you trying to use strong name assemblies? Personally, I would not advise if you make these meetings available to the public. These assemblies are intended only to separate problems in your own application, then in fact there should be no truth. The resulting application will be compiled against the latest version of each subproject, and each subproject will be compiled only after changing it.
In any case, you should specify somewhere that you need a specific version of a specific assembly (probably in app.config / web.config). Can you just remove the version restriction from this configuration?
source share