Archive for April, 2009

Managing Manifests and Dependencies Under Visual Studio

Wednesday, April 1st, 2009

When building an executable under Microsoft Visual Studio (either the 2005 or 2008 edition), an accompanying manifest file is generated.  The purpose of this file is to describe various dependencies of the executable such as DLLs.  The manifest file is typically baked directly into the executable itself, but alternatively it can exist as an external XML file.  In externalizing an application’s dependency information, developers can explicitly control which versions of the dependent files are to be used.  One major benefit of this design is that various versions of a dependency can exist simultaneously (Side-by-side assemblies as Microsoft calls them) and thus different programs need not use the same version of the dependency files.  This is a great idea in theory as it would eliminate the problem of keeping system DLLs in sync, a process affectionately known as DLL Hell.  However, there are still a few quirks of manifest files that can drive developers and users alike mad. (more…)