Переход по источнику ASP.NET MVC 2 - PullRequest
1 голос
/ 27 июня 2010

Я пытался настроить ASP.NET MVC 2 RTM Source для использования с моим приложением, чтобы при отладке я мог выполнять такие действия, как привязка модели. Однако я не смог заставить его работать - Я получаю сообщения об ошибках вроде:

The type 'System.Web.Mvc.Controller' is defined in an assembly that is not referenced. 
You must add a reference to assembly 'System.Web.Mvc, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35'.

The type 'System.Web.Mvc.Async.AsyncControllerActionInvoker' is defined in an assembly that is not referenced. 
You must add a reference to assembly 'System.Web.Mvc, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=31bf3856ad364e35'.

Etc ...

Я следовал инструкциям в Howto Стива Сандерсона (для MVC1), но, возможно, есть другие способы заставить его работать в MVC2?

Шаги, которые я предпринял до сих пор:

  • Удалены ссылки на GAC на основе System.Web.Mvc dll из всех моих проектов.
  • Добавлен источник MVC в качестве проекта в решение.
  • Добавлены ссылки на проект System.Web.Mvc в каждом из моих проектов.
  • Закомментирован элемент <add assembly="System.Web.Mvc... в разделе <compilation><assemblies> корня web.config
  • Закомментировал элемент <add assembly="System.Web.Mvc... в разделе web.config в папке Views (и в папках Views каждой из областей)
  • Найти / заменить любую из ссылок на System.Web.Mvc, Version=2.0.0.0 и заменить их PublicKeyToken значением на null (было 31bf3856ad364e35)

Итак, вопросы:

  • Кто-нибудь еще получил это работает? (предположительно да!)
  • Откуда приходят PublicKeyToken цифры в ошибках?
  • Есть некоторые другие ссылки на этот же PublicKeyToken (31bf3856ad364e35) для других dll в web.config (например, System.Web.Extensions), это уместно?
  • Есть идеи, что я делаю не так ?! Шаги, которые я пропустил?

Спасибо!

UPDATE: В ответ на вопросы Сидни, вот дополнительная информация:

1) Текущий узел сборок из web.config:

<compilation debug="true">
    <assemblies>
        <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
        <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    </assemblies>
</compilation>

2) Да, я использую MVC Futures, но этот проект также встроен в мое решение, и я ссылался на него, чтобы использовать System.Web.Mvc в решении.

3) Я использую несколько нестандартных ссылок. Скорее скриншот, я перечислю их здесь:

Autofac
Autofac.Integration.Web
Autofac.Integration.Web.Mvc
Elmah
FluentValidation
FluentValidation.Mvc
log4net
MvcContrib
MySql.Data
NHibernate
MvcFutures

Ответы [ 2 ]

3 голосов
/ 27 июня 2010

Вам не нужно загружать исходный код или удалять ссылки из GAC. Просто следуйте инструкциям, описанным в этом сообщении в блоге .

  • Снимите флажок: Включить только мой код (только управляемый)
  • Проверка: включить поддержку исходного сервера
  • Добавление сервера символов: в VS2010 вам нужно только проверить Microsoft Symbols Servers, не нужно вводить URL, в VS2008 вам нужно ввести URL

Создайте новое приложение ASP.NET MVC, вставьте точку останова в действие вашего контроллера, а когда точка останова будет достигнута, загрузите символы для сборки System.Web.Mvc из стека вызовов, и после загрузки символов вы сможете пройти через исходный код (после принятия условий).

1 голос
/ 27 июня 2010

Вместо того, чтобы комментировать строки <assemblies><add assembly>, вместо этого следует установить PublicKeyToken = null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...