Dependency Hell – Or Compilation-time DLL Hell

For the last couple of months I’ve been working on a project on which the entire Visual Studio solution has 65 projects.

Luckily I’ve been able to work with a smaller solution with only a subset of the projects: The ones that I was working directly with and the ones that I needed for a reason or another.

Unfortunately a couple of weeks ago, the time to start integrating my projects to the main solution arrived and since then I and other team members have been having troubles setting up references between projects.

I ended up detecting that the problems where caused by the references being set by file when for the sake of easy compilation they should been referenced by project.

I then reviewed all the projects setting their reference types to project references and the number of issues fell dramatically.

But occasionally a team member was getting compilation errors during to version number conflicts.

Imagine that project A depends on projects B and C and that B and C depend on different versions of D.

When you try to build the entire solution, although references where set to projects instead of files, Visual Studio 2003 couldn’t compile project A stating that there where conflicting versions of D in the bin folder.

Well, to get the story short, after trying to get rid of the error I searched around and ended up finding an article the explained how to resolve the issue: Error: the dependency ‘file’ in project ‘project’ cannot be copied to the run directory because it would conflict with dependency ‘file’  


Accessing a Web Service from within a browser’s client-side script

Have you already accessed a Web Service through the browser?
I’m not talking about that test page shown when you open the WSDL file in Internet Explorer.
I’m talking about accessing a Web Service through client-side script.
Imagine that you have a Web Forms application whose server does a Web Service operation on another server and passes the result back to the client. It serves only as a gateway between the client and the Web Service.
Using WebService Behavior there is no need to do this triangulation because the browser can access the Web Service directly using JavaScript or VBScript on Internet Explorer 5.0 or later.
The feature is exposed through an HTML component (*.htc) but unfortunately it isn’t supported (anymore?) by Microsoft.