Тип или имя пространства имен не существует в системе пространства имен.Сеть.В 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.
- перейдите в сервис - > менеджер пакетов NuGet - > Управление пакетами NuGet для решения
- нажмите "обновления"
- обновление "Microsoft ASP.NET MVC"
- Перестроить Решение
У меня была та же проблема - мой сценарий состоял в том, что я ссылался на новую систему.Сеть.В 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 в том же пути к каталогу.
надеюсь, что поможет.
У меня была эта проблема, установка локального включения и выключения копирования и т. д. не работала. Проект не использовал 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
и добавил снова, тогда все вернулось к норме, и моя проблема решена.