I\'m using PostSharp, and this was working fine. Recently, we upgraded some projects to the MVC version 5.2. Today, I loaded up an old project which was using version 4.0
This error is usually raised when some of the 3-rd party assemblies references older version of System.Web.Mvc. You have the binding redirect in your web.config, but you also need to tell PostSharp to use that configuration during build. You can do it by setting PostSharpHostConfigurationFile
build property to the path of your *.config file.
<PropertyGroup>
<PostSharpHostConfigurationFile>web.config</PostSharpHostConfigurationFile>
</PropertyGroup>
Add the code below inside your [project].csproj file. To achieve this follow the steps:
<Import Project
of PostSharp;<Import Project .../>
tag;Code:
<PropertyGroup>
<PostSharpHostConfigurationFile>web.config</PostSharpHostConfigurationFile>
</PropertyGroup>
Your xml code should look something like:
<Import Project="..\..\packages\PostSharp.4.0.42\tools\PostSharp.targets" Condition="Exists('..\..\packages\PostSharp.4.0.42\tools\PostSharp.targets')" />
<PropertyGroup>
<PostSharpHostConfigurationFile>web.config</PostSharpHostConfigurationFile>
</PropertyGroup>
Postsharp may be referencing MVC 3 internally. You can try a binding redirect in your web.config:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>