2014-01-20 4 views
0

Существует решение с несколькими проектами, один из которых использует RazorEngine (который зависит от System.Web.Razor 3.0.0.0), а другой - проект ASP.NET MVC 4 , который использует System.Web.Razor 2.0.0.0.Использование 2 различных версий Razor в одном решении

Все работает нормально, пока я не начну использовать классы из первого проекта в моем проекте 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

Поскольку .NET не поддерживает загрузку более одной версии одной и той же сборки в любой домен приложения, она не будет работать в том же пуле приложений. С некоторыми обманами вы могли бы заставить все работать, используя два отдельных виртуальных каталога, один из которых размещает старое решение, в котором размещается новый.

Пока ваше приложение не полагается на состояние сеанса, которое может быть самым простым для работы. Пока вы убедитесь, что оба приложения настроены на the same MachineKeys. Это будет своего рода «развертывание веб-фермы».

Если вы используете состояние сеанса, вам может потребоваться configure session to be stored out-of-process in the state service or in SQL Server.

+0

Спасибо, я думаю, я передумаю модернизировать весь проект до Razor v3. – Arnthor

Смежные вопросы