2

I am setting up a new solution in which I want to use the latest Autofac (3.4) and PostSharp 3.1.42. After referencing the NuGet packages I get the following error and I can't figure out what is going on. I never selected Autofac 3.3.0 package.

packages.config:

  <package id="Autofac" version="3.4.0" targetFramework="net451" />
  <package id="Autofac.Extras.Multitenant" version="3.1.1" targetFramework="net451" />
  <package id="Autofac.Mvc5" version="3.3.0" targetFramework="net451" />
  <package id="PostSharp" version="3.1.42" targetFramework="net451" />

MSBuild log:

Error   3   Unhandled exception (3.1.43.0, 32 bit, CLR 4.5, Release): PostSharp.Sdk.CodeModel.AssemblyLoadException: Cannot find assembly 'autofac, version=3.3.0.0, culture=neutral, publickeytoken=17863af14b0044da'. [Version mismatch]

============ PostSharp Assembly Loading Log ===================

LOG: Finding the assembly with binding identity 'autofac, version=3.3.0.0, culture=neutral, publickeytoken=17863af14b0044da'.

LOG: Found file 'D:\web\Project\packages\Autofac.3.4.0\lib\net40\Autofac.dll' with identity 'autofac, version=3.4.0.0, culture=neutral, publickeytoken=17863af14b0044da, processorarchitecture=msil'.

LOG: Reference mismatch for 'D:\web\Project\packages\Autofac.3.4.0\lib\net40\Autofac.dll' [VersionMismatch].

LOG: Probing location 'C:\ProgramData\PostSharp\3.1.43\bin.Release\Autofac.exe' because this directory was explicitly added to the search path [File Not Found].

LOG: Probing location 'C:\ProgramData\PostSharp\3.1.43\bin.Release\Autofac.dll' because this directory was explicitly added to the search path [File Not Found].

LOG: Probing location 'C:\ProgramData\PostSharp\3.1.43\bin.Release\Autofac.winmd' because this directory was explicitly added to the search path [File Not Found].

LOG: Probing location 'D:\web\Project\src\Framework\BLL\bin\Autofac.exe' because this directory was explicitly added to the search path [File Not Found].

LOG: Found file 'D:\web\Project\src\Framework\BLL\bin\Autofac.dll' with identity 'autofac, version=3.4.0.0, culture=neutral, publickeytoken=17863af14b0044da, processorarchitecture=msil'. LOG: Reference mismatch for 'D:\web\Project\src\Framework\BLL\bin\Autofac.dll' [VersionMismatch].

LOG: Probing location 'D:\web\Project\src\Framework\BLL\bin\Autofac.winmd' because this directory was explicitly added to the search path [File Not Found].

LOG: Probing location 'D:\web\Project\src\Framework\BLL\obj\O\Autofac.exe' because this directory was explicitly added to the search path [File Not Found].

LOG: Probing location 'D:\web\Project\src\Framework\BLL\obj\O\Autofac.dll' because this directory was explicitly added to the search path [File Not Found].

LOG: Probing location 'D:\web\Project\src\Framework\BLL\obj\O\Autofac.winmd' because this directory was explicitly added to the search path [File Not Found].

LOG: Probing location 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Autofac.exe' because this directory was explicitly added to the search path [File Not Found].

LOG: Probing location 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Autofac.dll' because this directory was explicitly added to the search path [File Not Found].

LOG: Probing location 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Autofac.winmd' because this directory was explicitly added to the search path [File Not Found].

LOG: Probing location 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\Autofac.exe' because this directory was explicitly added to the search path [File Not Found].

LOG: Probing location 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\Autofac.dll' because this directory was explicitly added to the search path [File Not Found].

LOG: Probing location 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\Autofac.winmd' because this directory was explicitly added to the search path [File Not Found].

LOG: Looking in GAC for Autofac, Version=3.3.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=x86.

LOG: Looking in GAC for Autofac, Version=3.3.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=msil.

LOG: Looking in GAC for Autofac, Version=3.3.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da.

LOG: The assembly 'autofac, version=3.3.0.0, culture=neutral, publickeytoken=17863af14b0044da' was not found.

===============================================================

   at PostSharp.Sdk.CodeModel.Domain.GetAssembly(IAssemblyName assemblyName, BindingOptions bindingOptions)

   at PostSharp.Sdk.CodeModel.AssemblyRefDeclaration.^5YpB0scd(BindingOptions
_0)

   at 

PostSharp.Sdk.Extensibility.Tasks.MulticastAttributeTask.^SgrhoGlQ(AssemblyRefDeclaration
_0)

   at PostSharp.Sdk.Extensibility.Tasks.MulticastAttributeTask.^+GwnKh4ZYHu3() at PostSharp.Sdk.Extensibility.Tasks.MulticastAttributeTask.Execute()  at PostSharp.Sdk.Extensibility.Project.ExecutePhase(String phase)    at PostSharp.Sdk.Extensibility.Project.Execute()    at PostSharp.Hosting.PostSharpObject.ExecuteProjects()    at PostSharp.Hosting.PostSharpObject.InvokeProject(ProjectInvocation projectInvocation).   D:\web\Project\src\Framework\BLL\BLL.csproj BLL

Does anybody know where this is coming from and how I can fix this? In the past I created some projects with Autofac 3.3.0. Could this be some cache? PostSharp and Autofac are not in my GAC.

Vignesh Kumar A
  • 27,863
  • 13
  • 63
  • 115
Hans Leautaud
  • 1,742
  • 1
  • 19
  • 34

1 Answers1

7

Okay, so I already found the answer. Somehow PostSharp is looking for the wrong assembly in the wrong location. Just add this to your csproj file to fix it:

<PostSharpHostConfigurationFile>$(SolutionDir)path\to\your\web.config</PostSharpHostConfigurationFile>
Hans Leautaud
  • 1,742
  • 1
  • 19
  • 34
  • Your project has a reference to package Autofac.Extras.Multitenant 3.1.1, which references Autofac 3.3. This is most probable reason that makes PostSharp trying to load Autofac 3.3 during build. You found a correct solution - tell PostSharp which binding redirections to use by pointing it to your web.config. – AlexD Jun 10 '14 at 16:54
  • Where do you add this to your csproj file? Mine is an asp.net mvc project, and it won't recognize the xml element, so it won't load the project after I add this. – marcel_g Dec 03 '14 at 14:52
  • we added it in the 1st PropertyGroup -- worked like a charm – Chaim Eliyah Jul 13 '16 at 00:10