I'm wondering about .NET's defined behaviour as regards the resolution of dependencies on specific versions of assemblies. As an example, I have a dependency on DataAccess.SQLite
, which depends on System.Data.SQLite
1.0.66.0. My installed version of System.Data.SQLite
, however, is 1.0.77.0. I've found that Visual Studio 2010 will automatically inject an app.config directive to bind the System.Data.SQLite
dependency to 1.0.77.0:
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.0.77.0" newVersion="1.0.77.0"/>
</dependentAssembly>
</assemblyBinding>
But, even if I remove this directive, the dependency on System.Data.SQLite
1.0.66.0 is apparently resolved to 1.0.77.0. Is this the defined behaviour for .NET dependency resolution?
I have had it happen in an ASP.NET MVC 3 project that .NET was unable to resolve the dependency as version 1.0.66.0 was not found, which is mainly why I'm asking.