После установки, сайты созданные на asp.net mvc перестали работать. В ходе кодокопания была выявлена следующая неприятная ситация.
Сайт был реализован на базе Asp.Net MVC Preview 2, в котором Dll выглядили следующим обазом:
System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35
System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35
После выхода Asp.Net MVC Preview3 Сборки получили новые версии и стали выглядеть так.
System.Web.Abstractions, Version=0.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35
System.Web.Routing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35
Это было сделано, чтобы не вводить разработчиков в шоковое состояние от номера версии.
Но вот вместе с SP1 идут те самые две библиотеки, так как Microsoft включил их в ряд своих проектов(Dynamic Data, Data Services). Где они хранятся в следующем виде:
System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35
System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35
Ничего не напоминает ? Это теже самые номера, что и в Preview2. В результате при работе компилятор подхватывает именно их. И в ходе работы можно столкнуться например с такой проблемой:
Не удалось загрузить тип "System.Web.HttpContextWrapper2" из сборки "System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35".
Вот к чему приводит не согласованная политика версий...
2 комментария:
Ну так это-же CTP были. Какой с них может быть спрос?
Bindingredirect пропишите, и все дела.
Про несогласованость версий это я вообще ))) Проблему уже решили, тем самым Bindingredirect-ом. Кстати у Фила Хака в блоге есть комментарии по этому поводу, а также на оффициальном сайте есть решение этой проблемы. Самое интересное что с этой проблемой столкнулись не только разработчики использующие asp.net mvc, но и те кто использует Data Dynamic )))
Отправить комментарий