Обновление ASP.NET MVC до бета-версии: IControllerFactory определяется в сборке, на которую нет ссылок

В настоящее время я занимаюсь обновлением сайта с предварительного просмотра 2 ASP.NET MVC до бета-версии. Я перешел к моей последней ошибке компиляции без решения на сайте после исчерпывающего поиска. У меня есть некоторый код в Global.asax.cs, который устанавливает IOC, используя контейнер Windsor:

ControllerBuilder.Current.SetControllerFactory(typeof(WindsorControllerFactory));

Компилятор жалуется, что:

The type 'System.Web.Mvc.IControllerFactory' is defined in an assembly that is not referenced. 
You must add a reference to assembly 'System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.

Странно то, что на эту сборку ссылаются. Я ссылаюсь на него из папки бета-сборок MVC и устанавливаю для локального копирования. Я даже могу удалить каталог bin, перестроить, затем просмотреть сборку в отражателе и увидеть интерфейс. Я попытался удалить и повторно добавить ссылку, изменив сборки web.config и разделы пространства имен. Я даже удалил System.Web.Mvc из GAC, чтобы убедиться, что он использует правильную копию.

При написании этого вопроса мне пришло в голову, что, возможно, Виндзор внутренне ожидает более старую версию сборки. Я загружаю последнюю версию с MvcContrib, чтобы определить, является ли это проблемой, и я опубликую результат. Если это так, не должен ли номер версии сборки измениться с последней версией, чтобы сделать это очевидным?

Спасибо за чтение, Бретт

2 ответа

Решение

PublicKeyToken= нуль не кажется правильным...

Изменить: Я был прав, PublicKeyToken должен быть "31bf3856ad364e35". Похоже, они связаны с частной сборкой System.Web.Mvc.dll, которая не подписана.

Убедитесь, что вы обновили соответствующие ссылки на сборки до 3.5.0.0 в своем файле web.config, как описано в примечаниях к обновлению для бета-версии.

Другие вопросы по тегам