Тип или имя пространства имен не существует в системе пространства имен.Сеть.В MVC'

Buiding MVC3 решение прошло хорошо, но получили ошибку в браузере:

сообщение об ошибке компилятора: CS0234: тип или имя пространства имен "Html"не существует в системе пространства имен.Сеть.Mvc '(вам не хватает ссылки на сборку?)

Source Error:
Line 25:         <add namespace="System.Web.Mvc" />
Line 26:         <!--<add namespace="System.Web.Mvc.Ajax" />-->
Line 27:         <add namespace="System.Web.Mvc.Html" />
Line 28:         <add namespace="System.Web.Routing" />
Line 29:         <add namespace="System.Web.WebPages" />

Я установил пакеты для решения с NuGet и настроить для всех проектов MVC3. Делает MVC3 библиотеки System.Web.Mvc.Ajax, System.Web.Mvc.Html и другие? Почему я получаю ошибка?


в папке References у меня есть система.Сеть.В MVC

Runtime version: v4.0.30319,

Version: 3.0.0.0

Web.config

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=152368
  -->
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
    <add key="webpages:Version" value="1.0.0.0" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn" timeout="2880" />
    </authentication>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
    <httpRuntime targetFramework="4.5" encoderType="System.Web.Security.AntiXss.AntiXssEncoder, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    <machineKey compatibilityMode="Framework45" />
    <profile defaultProvider="DefaultProfileProvider">
      <providers>
        <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
      </providers>
    </profile>
    <membership defaultProvider="DefaultMembershipProvider">
      <providers>
        <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
      </providers>
    </membership>
    <roleManager defaultProvider="DefaultRoleProvider">
      <providers>
        <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
      </providers>
    </roleManager>
    <sessionState mode="InProc" customProvider="DefaultSessionProvider">
      <providers>
        <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
      </providers>
    </sessionState>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
  <connectionStrings>
    <add name="EFDbContext" connectionString="Data Source=.SQLEXPRESS;Initial Catalog=SportStore;Integrated Security=True;Pooling=False;" providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

MSDN система.Сеть.Пространства имен в MVC

packages.config:
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="EntityFramework" version="5.0.0-rc" />
  <package id="jQuery" version="1.7.2" />
  <package id="jQuery.UI.Combined" version="1.8.11" />
  <package id="jQuery.Validation" version="1.9" />
  <package id="Microsoft.AspNet.Mvc" version="3.0.20105.1" />
  <package id="Microsoft.AspNet.Providers.Core" version="1.0" />
  <package id="Microsoft.AspNet.Providers.LocalDB" version="1.0" />
  <package id="Microsoft.AspNet.Razor" version="1.0.20105.408" />
  <package id="Microsoft.AspNet.WebPages" version="1.0.20105.408" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" />
  <package id="Modernizr" version="2.0.6" />
  <package id="Moq" version="4.0.10827" />
  <package id="Ninject" version="3.0.1.10" />
</packages>

21 ответов


очистите решение, а затем установите свойство этих файлов в Copy Local = True.

для установки свойства копировать локальное значение True или False

в обозревателе решений нажмите кнопку Показать все файлы, чтобы отобразить узел ссылки.

  • откройте узел ссылки для проекта.
  • щелкните правой кнопкой мыши ссылку в списке ссылки и выберите пункт Свойства. Свойства, связанные с этой ссылкой, отображаются в списке свойств окно.
  • в окне Свойства измените свойство копировать локальное на True или False.

по какой-то причине два моих решения имеют веб-проекты, которые спонтанно удаляются asp.net MVC как-то. Я установил его из Nuget, и теперь они оба снова работают. Это произошло после недавнего пакета обновлений windows, который включал обновления .net framework для версии, которую я использовал (4.5.1).

Edit: из блога .Net Web Development and Tools:

Microsoft Asp.Net MVC Security Update MS14-059 сломал мою сборку!


этот обычно ловит меня, когда я запускаю из IIS, а пул приложений для сайта по умолчанию установлен в .NET версии 2.0. При использовании IIS из visual studio он создает виртуальный каталог, но по-прежнему работает в пуле приложений сайта по умолчанию. При использовании сборки в веб-сервере щелкните правой кнопкой мыши на веб-проекте, перейдите к свойствам и убедитесь, что вы используете его под правильной версией .Сеть. В IIS проверьте версию .NET в пуле приложений.

после моего последнего комментария о том, как проект был создан-правильно ли вы включаете сборки, как показано ниже (взято из интернета по умолчанию.конфигурационный файл, сгенерированный шаблоном проекта MVC3 в VS10):

<compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </assemblies>
</compilation>

вам нужно обновить MVC.

  1. перейдите в сервис - > менеджер пакетов NuGet - > Управление пакетами NuGet для решения
  2. нажмите "обновления"
  3. обновление "Microsoft ASP.NET MVC"
  4. Перестроить Решение

У меня была та же проблема - мой сценарий состоял в том, что я ссылался на новую систему.Сеть.В MVC.dll из папки lib, и у меня не было" копировать локальное " значение true. Затем приложение возвращалось к версии в GAC, в которой не было правильных пространств имен (Html, Ajax и т. д.), и давало мне ошибку времени выполнения.


мое решение было под Управление пакетами Nuget для решения... -- у меня было множество обновлений для нескольких пакетов.

позвольте мне отступить на полшага и сказать, что я облажался, потому что я переместил решение и проекты из одной папки в другую... таким образом, все уже вышло из-под контроля по сравнению с тем, где проекты думали, что все будет. Все прошло просто отлично, но, по-видимому, Nuget запутывается, если вы не используете другой подход, чем Я сделал.

вернуться к решению... Я просто пошел в Управление пакетами Nuget для решения... >> обновления >> Microsoft и .NET и нажмите "обновить все".

все вернулось к нормальному и счастливому.


Я загрузил проект mvc 5 и оскорбительную проблему, указывающую на

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

С этим сообщением об ошибке:

CS0234: The type or namespace name 'Ajax' does not exist in the namespace 'System.Web.Mvc' (are you missing an assembly reference?)

-- > в котором я пришел на эту веб-страницу и попробовал чистый и несколько вещей выше и т. д...

то, что работал для меня было просто

Manage Nuget and Update all the packages.  Then it worked fine.

этот ответ довольно поздно, учитывая дату вопроса, но кто-то может найти это полезным.

ни одно из вышеперечисленных решений не работало для меня в Visual Studio 2012 в локальном проекте Net Framework 4.5 MVC 4. Для контекста я следовал учебнику по созданию веб-Api barebones на CodeProject (http://www.codeproject.com/Articles/615805/Creating-a-Clean-Minimal-Footprint-ASP-NET-WebAPI) Когда я столкнулся с этой проблемой.

Что сработало для меня явное добавление " System.Сеть.Mvc "на ссылки моего приложения, хотя приложение уже ссылалось на "систему".Сеть."


Запуск следующей команды в диспетчере пакетов nuget исправил это для меня:

update-package microsoft.aspnet.mvc -reinstall

У меня была та же проблема, но ни одна из вышеперечисленных не работала для меня. Но они направили меня в правильном направлении.

например, когда я устанавливаю "копировать локальный" в "true" для системы.Сеть.Ссылка Mvc автоматически возвращает значение False.

У меня есть несколько проектов, которые зависят от системы.Сеть.Ссылка Mvc в моем решении, но только одна вызвала эту проблему. В VS 2012 Эта ссылка помечена желтым треугольником внимания.

найти это reference => remove it => re-add it

это исправило это для меня. Надеюсь, это поможет


просмотр и проверка ссылочных путей в вашем csproj.

Я удалил ссылки на систему.Сеть.Mvc (и другие) и прочитал их по пользовательскому пути. C:\Project\OurWebReferences

однако после этого ссылочный путь в все еще csproj не изменился. Был

<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\..\..\OurWebProject\bin\Debug\System.Web.Mvc.dll</HintPath>
</Reference>

изменен вручную

<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
        <HintPath>..\..\..\..\OurWebReferences\System.Web.Mvc.dll</HintPath>
</Reference>

пути являются только примером.


для меня решение состояло в том, чтобы все проекты строились для одного и того же процессора - в моем случае x86


копировать Local = True было решено для одного из моих проектов. Но в другом проекте я получаю ту же ошибку, пытался установить Copy Local = true, но это не решает мою проблему. Изменение целевой платформы с 4.5.1 на 4.5 в свойствах проекта помогло в этом.


Я сделал что-то действительно глупое (и, возможно, вы тоже).

Я пытался позвонить System.Web.Mvc.Html.Partial("<Partial Page>")


Если любой из вышеперечисленных не решает вашу проблему, просто установите свойства системы.Сеть.В MVC.dll для копирования локальной ture.

Это решает


У меня была та же проблема, но в моем случае она была вызвана другим фактором. Я пишу это, чтобы помочь другим людям с той же проблемой. У меня есть решение с несколькими проектами. два из них работают с системой.Сеть.Mvc, обычно наша ссылка указывала на внешние пакеты, где мы контролировали используемую версию. По какой-то причине одна из ссылок проекта идет в GAC и указывает на dll GAC (версия 4.0.0.1), и программа получила ошибку. Чтобы исправить это:

простая проверка если ссылки на систему.Сеть.MVC указывает на ту же dll в том же пути к каталогу.

надеюсь, что поможет.


Я удалил систему.Сеть.dll из Bin frolder моего сайта.


У меня была эта проблема, установка локального включения и выключения копирования и т. д. не работала. Проект не использовал nuget, поэтому исправления вокруг этого также не рассматривались.

исправление для меня было установить MVC 3 (что я сделал через установщик веб-платформы).

Я подозреваю, что это станет более подходящим решением для людей, поскольку .net framework продолжает развиваться, и у людей нет более старых MVC-материалов.


вполне вероятно, что установка вашей DLL в CopyLocal / true или любое другое основное исправление для этого исправит вашу проблему, но вот еще один крайний случай, который поймал меня за 20 минут потерянного времени.

при добавлении пространств имен в представления / веб.config, убедитесь, что они расположены правильно:

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="THE.NameSpace" />
        <add namespace="THE.Namespace" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

Ok поэтому многие люди, похоже, испытывают эту проблему. Моя проблема была вызвана ссылками, имеющими пути к папкам bin других проектов или ссылками на DLL из системных папок. Проекту было около 6 лет, и предыдущие разработчики решили, что именно так они будут ссылаться на свои библиотеки.

решение состояло в том, чтобы пройти через каждую ссылку и проверить пути, затем удалить ссылку и добавить ее с помощью NuGet. Для любого пакета, который не было на NuGet я создал другую папку вместе с пакетами и поместил dll там в том же макете, что и NuGet.

Мне также пришлось просмотреть файлы конфигурации и убедиться, что используется правильная версия пакетов. Долгий и болезненный процесс!


У меня была такая же проблема, ни одно из решений не работал для меня, наконец я убрал System.Web.MVC и добавил снова, тогда все вернулось к норме, и моя проблема решена.