0

有一个包含多个项目的解决方案,其中一个是使用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 不是一种选择,因为它会破坏事情。

4

1 回答 1

1

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

只要您的应用程序不依赖 Session 状态,这可能是最简单的工作。只要您确保两个应用程序都配置了相同的 MachineKeys。这将是一种“网络农场部署”。

如果您使用会话状态,您可能需要将会话配置为在状态服务或 SQL Server 中以进程外方式存储

于 2014-01-20T11:13:52.173 回答