Тип или имя пространства имен «Mvc» не существует в пространстве имен «System.Web» - PullRequest
9 голосов
/ 22 апреля 2010

После преобразования гибридного приложения ASP.NET MVC1 в MVC2 я получаю следующую ошибку при попытке запустить приложение:

Тип или имя пространства имен «Mvc» не существует в пространстве имен «System.Web» (отсутствует ссылка на сборку?)

Предполагаемый виновник в файле web.config - System.Web.Mvc:

<namespaces>
    <add namespace="System.Web.Mvc"/>
    <add namespace="System.Web.Mvc.Ajax"/>
    <add namespace="System.Web.Mvc.Html"/>

Пока что мое расследование заставляет меня поверить, что версия 2 System.Web.Mvc не установлена ​​или не была обнаружена.

Я пытался создать File> New Project на основе MVC 2, и он собирает новую (v2) версию MVC. Я также преобразовал некоторые другие проекты (которые не были гибридами), и они без проблем были преобразованы в MVC2.

Я также удалил MVC1, чтобы попытаться удалить ссылки на него из GAC. Однако ничего из этого не сработало.

Есть идеи?

Ответы [ 3 ]

9 голосов
/ 22 апреля 2010

Убедитесь, что у вас есть перенаправление привязки в вашем Web.config:

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Web.Mvc" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

Это заставляет MVC 2, даже если MVC 1 находится на машине.

Также: MVC 1 имеет System.Web.Mvc пространство имен, поэтому убедитесь, что у вас также есть:

  <assemblies>
    <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
2 голосов
/ 17 мая 2013

Я столкнулся с чем-то похожим, и было решено изменить ссылку на Microsoft.Web.Mvc, чтобы для параметра Copy Local было установлено значение True.

1 голос
/ 16 апреля 2014

У меня была такая же ошибка, и при щелчке по ссылке с подробной ошибкой компиляции на странице обнаружились проблемы с System.Web.Helpers, .Http, и .WebPages.

После резервного копирования системы я запустил update-package -reinstall 'и принудительно удалил / переустановил все пакеты. Это заставило файл web.config быть правильно перестроен, и разделы dependentAssembly были построены правильно.

После пересмотра решения оно запустилось впервые.

Обратите внимание, что в web.config добавлен следующий неверный раздел providers.

<contexts>
  <context type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</contexts>
<providers>
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>

Это только генерирует предупреждение о сборке, но я удалил его в пользу предыдущего элемента contexts.

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