在一个解决方案中使用2个不同的Razor版本

时间:2014-01-20 11:00:47

标签: .net asp.net-mvc visual-studio razor razorengine

有一个包含多个项目的解决方案,其中一个使用 RazorEngine (取决于System.Web.Razor 3.0.0.0),另一个是ASP.NET MVC 4项目,它使用System.Web.Razor 2.0.0.0。

一切正常,直到我开始使用我的MVC项目中第一个项目的类。然后我收到了这个错误:

{"Could not load file or assembly 'System.Web.Razor, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's
manifest definition does not match the assembly reference. (Exception from HRESULT:
0x80131040)":"System.Web.Razor, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"}

有没有办法同时使用这两个版本?将整个解决方案升级到Razor 3不是一种选择,因为它打破了一切。

1 个答案:

答案 0 :(得分:1)

由于.NET不支持将同一程序集的多个版本加载到任何Application Domain中,因此它不会在同一个应用程序池中运行。通过一些技巧,您可以使用两个单独的虚拟目录来完成工作,一个托管旧解决方案,另一个托管新解决方案。

只要您的应用程序不依赖会话状态,这可能是最简单的工作方式。只要您确定两个应用程序都配置了the same MachineKeys。它是一种“Web场部署”。

如果您使用的是会话状态,则可能需要configure session to be stored out-of-process in the state service or in SQL Server