A solução MVC3 da Buiding correu bem, mas ocorreu um erro no navegador:
Mensagem de erro do compilador: CS0234: O tipo ou nome do espaço para nome 'Html' não existe no espaço para nome 'System.Web.Mvc' (está faltando uma referência de montagem?)
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" />
Instalei pacotes para a solução NuGet
e configurei para todos os projetos MVC3
. Será que MVC3
incluem bibliotecas System.Web.Mvc.Ajax
, System.Web.Mvc.Html
e outros? Por que estou recebendo o erro?
Na pasta Referências, tenho System.Web.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 o espaço para nome System.Web.Mvc
arquivo 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>
c#
asp.net-mvc-3
J.Olufsen
fonte
fonte
System.Web.MVC
não copiado para abin
pasta desde MS14-059Respostas:
Limpe sua solução e defina a propriedade desses arquivos como
Copy Local = True
.Para definir a propriedade Copiar local como Verdadeiro ou Falso
No Gerenciador de Soluções, clique no botão Mostrar Todos os Arquivos para exibir o nó Referências.
fonte
System.Web.Mvc
Por alguma razão, DUAS das minhas soluções têm projetos da Web que desinstalam espontaneamente o asp.net MVC de alguma forma. Eu o instalei no Nuget e agora os dois funcionam novamente. Isso aconteceu depois de um lote recente de atualizações do Windows que incluíam atualizações da estrutura .net da versão que eu estava usando (4.5.1).
Edit: No Blog .Net Desenvolvimento Web e Ferramentas:
A atualização de segurança do Microsoft Asp.Net MVC MS14-059 quebrou minha compilação!
fonte
Esse normalmente me pega quando executo o IIS e o pool de aplicativos do site padrão está definido como .NET versão 2.0. Ao usar o IIS no visual studio, ele cria um diretório virtual, mas ainda é executado no pool de aplicativos do site padrão. Se estiver usando o servidor da Web compilar, clique com o botão direito do mouse em seu projeto da Web, vá para Propriedades e verifique se está executando na versão correta do .NET. No IIS, verifique a versão do .NET no seu pool de aplicativos.
Seguindo meu último comentário sobre como o projeto foi criado - você está incluindo corretamente os assemblies, como abaixo (extraído do arquivo web.config padrão gerado pelo modelo de projeto MVC3 no VS10):
fonte
Você precisa atualizar o MVC.
fonte
Eu tive o mesmo problema - meu cenário era que eu estava fazendo referência ao novo System.Web.Mvc.dll a partir de uma pasta lib e não tinha "Copy Local" configurado como true. O aplicativo foi revertido para a versão no GAC que não possuía os namespaces corretos (HTML, Ajax etc.) e estava me dando o erro de tempo de execução.
fonte
Minha solução estava em Gerenciar pacotes Nuget para solução ... - Eu tinha várias atualizações para fazer em alguns pacotes.
Deixe-me voltar um passo e dizer que me ferrei porque mudei a solução e os projetos de uma pasta para outra ... para que as coisas já estivessem malucas em comparação com o local em que os projetos pensavam. Tudo mudou muito bem, mas aparentemente Nuget fica confuso, a menos que você use uma abordagem diferente da minha.
De volta à solução ... Simplesmente fui para Gerenciar pacotes Nuget para solução ... >> Atualizações >> Microsoft e .NET e pressione o botão Atualizar tudo .
Tudo voltou ao normal e feliz.
fonte
Baixei um projeto do mvc 5 e o problema incorreto apontando para
Com esta mensagem de erro:
-> em que cheguei a esta página e tentei limpar algumas coisas acima, etc ...
O que funcionou para mim foi apenas para
fonte
A execução do seguinte comando no gerenciador de pacotes nuget o corrigiu para mim:
fonte
Essa resposta é um pouco tarde, dada a data da pergunta, mas alguém pode achar útil.
Nenhuma das soluções acima funcionou para mim no Visual Studio 2012 em um projeto local, o Net Framework 4.5 MVC 4. Para o contexto, eu estava seguindo um tutorial sobre como criar uma API Web de barebones no CodeProject ( http://www.codeproject.com/ Articles / 615805 / Criação de uma pegada mínima limpa - ASP-NET-WebAPI ) quando deparei com esse problema.
O que funcionou para mim foi adicionar explicitamente "System.Web.Mvc" às referências do meu aplicativo, mesmo que o aplicativo já tenha feito referência a "System.Web".
fonte
Eu tive o mesmo problema, mas nenhuma das opções acima funcionou para mim. Eles me colocaram na direção certa.
Por exemplo, quando eu defino o "Copy Local" como "true" para a referência System.Web.Mvc, ele o define automaticamente novamente como False.
Eu tenho vários projetos que dependem da referência System.Web.Mvc na minha solução, mas apenas um causou esse problema. No VS 2012, essa referência é rotulada com o triângulo de atenção amarelo.
Encontre esta referência => remova-a => adicione-a novamente
Isso consertou para mim. Espero que isto ajude
fonte
Visualize e verifique os caminhos de referência no seu csproj.
Eu removi as referências ao System.Web.Mvc (e outros) e as li para um caminho personalizado.
C:\Project\OurWebReferences
No entanto, depois de fazer isso, o caminho de referência no csproj ainda não foi alterado. FOI
Alterado para manualmente
Os caminhos são apenas um exemplo.
fonte
Para mim, a solução era garantir que todos os projetos estivessem construindo para a mesma CPU - no meu caso x86
fonte
Copiar Local = True foi resolvido para um dos meus projetos. Mas em outro projeto, recebo o mesmo erro, tentei definir Copy Local = true, mas isso não resolve o meu problema. Alterar a estrutura de destino de 4.5.1 para 4.5 em Propriedades do projeto ajudou com isso.
fonte
Fiz algo realmente estúpido (e talvez você também).
Eu estava tentando ligar
System.Web.Mvc.Html.Partial("<Partial Page>")
System.Web.Mvc.Html é um espaço para nome e não uma classe e eu não li minha mensagem de erro tão bem, então interpretei meu erro como a classe
Html
não existe no espaço para nome System.Web.Mvc e foi assim que terminei aqui em cima (estúpido eu sei).Tudo o que eu precisava fazer era adicionar uma instrução using
@using System.Web.Mvc.Html
à minha página e depois@Html.Partial
trabalhar como esperado.fonte
se alguma das opções acima não resolver o problema, defina as propriedades do System.Web.Mvc.dll para copiar a local ture.
vai resolver
fonte
Eu tive o mesmo problema, mas no meu caso foi originado por outro fator. Escrevo isso para ajudar outras pessoas com o mesmo problema. Eu tenho soluções com vários projetos. dois deles trabalham com o System.Web.Mvc, normalmente nossa referência apontava para pacotes externos onde controlávamos a versão usada. Por alguma razão, uma das referências do projeto vai para o GAC e aponta para a dll do GAC (versão 4.0.0.1) e o programa obteve o erro. Para corrigi-lo:
Verifique se as referências ao System.Web.Mvc apontam para a mesma dll no mesmo caminho de diretório.
Espero que ajude.
fonte
Eu apaguei System.Web.dll da pasta Frolder do meu site.
fonte
Eu tive esse problema, configurar a cópia local como ligado e desligado etc. não funcionou. O projeto não estava usando nuget, portanto, correções que estavam fora de questão também.
A correção para mim foi instalar o MVC 3 (o que fiz através do instalador da plataforma web).
Eu suspeito que isso se tornará mais uma solução para as pessoas, pois a estrutura .net continua avançando e as pessoas não têm o material MVC mais antigo instalado.
fonte
É provável que definir sua DLL como CopyLocal / true ou qualquer outra correção importante para corrigir esse problema, mas aqui está outro exemplo que me pegou por 20 minutos de tempo perdido.
Quando você adiciona seus espaços de nome ao seu Views / Web.config, verifique se eles foram casados corretamente:
fonte
Ok, então muitas pessoas parecem estar enfrentando esse problema. Meu problema foi causado por referências com caminhos para as pastas bin de outros projetos ou referenciando DLLs de pastas do sistema. O projeto tinha cerca de 6 anos e os desenvolvedores anteriores haviam decidido que era dessa maneira que eles iam fazer referência a suas bibliotecas.
A solução foi passar por todas as referências e verificar os caminhos, depois remover a referência e adicioná-la usando o NuGet. Para qualquer pacote que não estivesse no NuGet, criei outra pasta ao lado dos pacotes e coloquei a DLL no mesmo layout que o NuGet faria.
Eu também tive que examinar os arquivos de configuração e garantir que a versão correta dos pacotes estivesse sendo usada. Um processo longo e doloroso!
fonte
Eu tenho um projeto que faz isso sempre que construo com o modo de exibição aberto. Assim que fechei a exibição, o erro desapareceu e a compilação foi bem-sucedida. Muito estranho.
fonte
Eu tive o mesmo problema, nenhuma das soluções funcionou para mim. Finalmente, removi
System.Web.MVC
e adicionei novamente. Então tudo voltou ao normal e meu problema foi resolvido.fonte