我有一个包含3个项目的解决方案:
Solution.Web.Core - 常用类
Solution.Web.Mvc - MVC 4
Solution.Web.Api - Web Api 2也称为运行ASP.NET 5.0(beta-1)程序集
我将WebApi设置为MVC应用程序的子应用程序(在IIS中),但是,我无法实现此项目的完全隔离。
因为Solution.Web.Core
有一些对ASP.NET 4.0程序集的引用,如果我在Solution.Web.Api
中添加对该项目的引用,我在运行时会得到以下异常:
无法加载文件或程序集'System.Net.Http.Formatting,Version = 5.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
如何防止在Solution.Web.Api
中发生此错误,以便我可以引用Solution.Web.Core
,尽管 引用旧的ASP.NET程序集版本?
注意:由于错误显示“System.Net.Http.Formatting
或其中一个依赖”我老实说甚至不知道如何找出哪个是确切的违规组件。< / p>
答案 0 :(得分:2)
从
更改View部分的Web.Config<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, **Version=5.0.0.0**, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
到
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, **Version=5.2.3.0**, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
答案 1 :(得分:1)
我刚刚开始使用MVC 5 + Web Api 2来解决这个问题。
然而,刚刚发现this blog post answer似乎它可能对我有用:
要允许MVC 4项目与5.0 beta程序集(至少是博客文章中的CORS程序集)一起使用,请将Web配置更改为以下内容:
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:bcl="urn:schemas-microsoft-com:bcl">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
</dependentAssembly>