DayPath Journal

My Autofac Packages Drama

The Autofac team is very busy trying to keep up with the .NET Core movement and are clearly suffering from legacy load. I understand that there are only two guys working on this hugely popular IOC ecosystem. The contrib project Autofac.Extras.Attributed is dragging Autofac (which is okay since latest stable today is 3.5.2) and Autofac.Mef back to versions less than 4.0. The last time I swept through my NuGet packages I forgot about this drama and broke the B-Roll Player (Songhay.Player) build which I flippantly pushed out to production.

The symptom of the break was CORS errors and the dreaded MVC, failed-to-load-assembly error. Until this drama is over I should remember that this Web.config entry is a red flag:

<dependentAssembly>
    <assemblyIdentity name="Autofac.Integration.Mef" publicKeyToken="17863af14b0044da" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
    

This means Autofac.Mef was erroneously upgraded by me to version 4.0, breaking Autofac.Extras.Attributed.

The drama does not end there. We also have this:

'Autofac.Owin 4.0.0' is not compatible with 'Autofac.Mvc5.Owin 3.1.0 constraint: Autofac.Owin (>= 3.1.0 && < 4.0.0)', 'Autofac.WebApi2.Owin 3.3.0 constraint: Autofac.Owin (>= 3.1.0 && < 4.0.0)'. 0
    

This is basically saying that Autofac.Mef and Autofac.Owin are in the same boat. The penalty for forgetting this is breaking the B-Roll player in production (which is my fault because I should at least run the site locally before publishing—and then consider upgrading my Azure App to a more professional tier).