views:

157

answers:

2

I added the ASP.NET MVC 2 RC2 source code to my solution (using these instructions: http://blog.stevensanderson.com/2009/02/03/using-the-aspnet-mvc-source-code-to-debug-your-app/), but now it won't build because of an error from Autofac.

The type 'System.Web.Mvc.IControllerFactory' is defined in an assembly
that is not referenced. You must add a reference to assembly
'System.Web.Mvc, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35'.

I'm especially confused by the reference to MVC Version 1. Even before I added the MVC source code, I was using MVC 2 (from binary) and Autofac was not complaining.

+1  A: 

The Autofac.Integration.Web assembly references System.Web.Mvc. You don't say which version of Autofac you are using, but if you are happy to use Autofac version 2 (currently beta) then there is a build available for .NET 4. See http://code.google.com/p/autofac/issues/detail?id=162 for details.

RichTea
How will the new build help?
JoelFan
It's... compiled against the MVC 2 assembly instead of the MVC 1 assembly?
Joel Mueller
That doesn't make sense... I was already using MVC 2 before and there was not problem with Autofac... only when I switched to using the SOURCE for MVC 2 did this problem happen.
JoelFan
See http://code.google.com/p/autofac/wiki/NewInV2 for a list of new features. The main change as far as you're concerned will be that it's built against the MVC2 assemblies :)I can't explain why it was working for you before without seeing the code before and after, but I'd be interested to hear if the new version sorts it for you.
RichTea
I upgraded to Autofac-Beta-2.1.8.731-NET35, but I'm still getting the origianal error
JoelFan
A: 

As eu-ge-ne mentioned, try the assembly binding. I have Autofac 1.4 running just fine against MVC 2 RC, although referenced as an assembly.

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

I couldn't really say why including the MVC project in your solution vs. referencing it is making a difference.

HackedByChinese