Erro HRESULT E_FAIL foi retornado de uma chamada para um componente COM VS2012 durante a depuração

100

Tenho um problema ao depurar um projeto migrado do Visual Studio 2010 para 2012. Sempre que vou depurá-lo, recebo a mensagem de erro:

"Erro HRESULT E_FAIL foi retornado de uma chamada para um componente COM".

Compilar e executar o aplicativo em um servidor IIS local funciona bem - simplesmente não é possível depurar.

A outra mudança além de mudar para o VS2012 é que agora estou usando o Team Foundation Server para controle de origem e rastreamento de problemas - mas não consigo ver como isso afetaria.

Posso restringir ao seguinte

  • O arquivo do projeto - foi migrado do VS 2003 como um projeto de site da Web e foi cortado e alterado nas diferentes versões
  • Biblioteca de tempo de execução do Crystal Report / alguma outra biblioteca

Alguém com alguma ideia?

Matt
fonte
Você pode postar seu arquivo de log de atualização? Também projete a estrutura que você tem na solução e a imagem do erro.
Nexus23
Você já conseguiu descobrir isso? Estou tendo exatamente o mesmo problema e estou puxando meu cabelo!
Chris Phillips
Não, eu tive que continuar a usar o VS2010 - o projeto está sendo reescrito, então o desenvolvimento atual quase parou ...
Matt
Uma resposta excluída recentemente abaixo sugeriu que um Windows Update resolveria isso.
Halfer
Olá, você aceitou uma resposta, mas a solução de @TimHall pode ser mais fácil e menos invasiva. Tentaste?
Spencer

Respostas:

59

Removi os arquivos csproj.user e funcionou para mim.

Em alguns outros casos, para corrigir esse erro, vou para a guia Web nas propriedades do projeto e marque "Usar servidor de desenvolvimento do Visual Studio" e "Atribuir porta automaticamente". Depois disso, preciso reconstruir o projeto e reiniciar o VS

Alejandro Haro
fonte
Bingo - não posso acreditar que isso causou o problema - obrigado por postar isso.
Matt,
7
Um pequeno esclarecimento a partir do MVS2017. Vá para Ferramentas -> Opções ... depois Projetos e Soluções -> Projetos da Web, desmarque "Mostrar automaticamente conexões de dados de web.config no Server Explorer ..." e recompile. Saudações de 2019, funciona perfeitamente!
Wormer
Eu tentei este Wormer, mas não funcionou para mim de alguma forma. !!!
Abhijeet Sinha
Neithre removendo csproj.user ajudou
Abhijeet Sinha
75

Eu tenho ouvido muito isso ultimamente. Tenho tido que criar um novo arquivo e mover o código para o novo arquivo para contornar isso.

Corrigi-o excluindo o arquivo suo da solução (pelo que posso dizer, ele apenas armazena informações como quais arquivos estão abertos no IDE e outras coisas, e excluí-lo não causa nenhum dano real).

Meu arquivo estava aparentemente corrompido. (O IDE não lembraria quais arquivos foram abertos ao reiniciar. Ele tinha 1,7 MB de tamanho, o que parece grande, mesmo para minha solução de 40 projetos, que raramente tem mais de 50 arquivos abertos ao mesmo tempo.)

Edit: Recentemente, tive que fazer isso no VS2017, mas por outro motivo, estava demorando mais para compilar e demorou mais de 5 minutos para interromper uma sessão de depuração, deletando aquele arquivo suo incômodo consertou-o, agora a qualquer momento VS age de forma estranha deletando SUO é meu primeiro porto de escala.

Tim Hall
fonte
1
Soluções trabalharam para mim (VS 2013 - Aplicativo Winforms)
Nikos Tsokos
Tentei de tudo, mas esta é a única solução que funcionou para mim .. obrigado @Tim Hall
Malik Khalil
Obrigado! Isso me ajudou
rhedin,
Funciona no VS 2017 também.
ctwheels
4
Obrigado, excluiu a .vsárvore de diretórios e corrigiu o problema de compilação no VS2017 com o mesmo erro.
Pavel Machyniak
68

Tive o mesmo problema com um projeto c ++ no Visual Studio 2019.

A seguinte solução funcionou para mim:

  • Feche o Visual Studio.
  • Vá para a pasta raiz do projeto e exclua o diretório .vs.
  • Inicie o Visual Studio e abra a solução.
  • A compilação agora deve funcionar.
datoml
fonte
3
Funcionou para mim. Não se esqueça de fechar o VS depois de excluir o diretório .vs. O diretório .vs está oculto, BTW.
Hari
Também C ++ no VS 2019 da pasta de compilação Cmake OpenCV. excluiu (oculto) .vs pasta do diretório raiz e funcionou. VOCÊS são os verdadeiros super-heróis!
Todd-ECU
10

Isso resolveu meu problema:

Iniciar -> Executar -> regsvr32 %SystemRoot%\System32\msxml3.dll

Iniciar -> Executar -> regsvr32 %SystemRoot%\SysWOW64\msxml3.dll

Antes eu tentei a solução acima do Simon, mas não funcionou para mim!

Talvez a combinação dessas duas soluções tenha feito o trabalho!

Besnik Kastrati
fonte
2
Isso funcionou para mim também. Não sei como o VS entrou nesse estado, mas isso me tirou disso. Recebi este erro ao abrir uma solução
the_mandrill 02 de
6

Desculpe por reviver um tópico morto, mas resolvi isso no VS2017 excluindo o cache do modelo de projeto e as pastas de cache do modelo de item em

%localappdata%\Microsoft\VisualStudio\[BUILD]

Em seguida, redefinir as configurações do Visual Studio via

Tools>Import and export settings>reset all settings

Também ouvi que desligar "Carga de solução leve para todos os projetos" pode ajudar.

Ricky Divjakovski
fonte
1
isso funcionou para mim também. Acabei de renomear todas as pastas que tinham o Visual Studios e o VS recriou todas as pastas, e os erros que eu tinha foram embora. Obrigado!
TravisWhidden
"Ferramentas> Importar e exportar configurações> redefinir todas as configurações" Funcionou para mim, tyvm.
Jhollman de
5

Gostaria de acrescentar que encontrei este erro ao abrir o arquivo de designer no aplicativo WinForms. Meu problema era que uma das referências do projeto era fazer referência a si mesmo. Aparentemente, isso pode acontecer conforme mencionado aqui

https://social.msdn.microsoft.com/Forums/office/en-US/00aede04-d8cd-4475-8114-4b4792261052/winforms-designer-error-hresult-efail-has-been-returned-from-a- componente call-to-a-com

Removi a referência e está funcionando bem.

Sugat
fonte
1
Esta não é uma resposta apenas com link. Ele descreve uma possível solução e fornece o link como referência.
Robert Columbia
1
Isso também funcionou para mim. Meu arquivo .proj tinha essa entrada mágica de referência que apareceu desde o meu último git commit. O HintPath apontou para a pasta obj \ Debug do projeto. Removido esta entrada e reconstruída, agora todos os meus designers estão trabalhando.
Karl,
1
Isso funcionou para mim também. O projeto tinha uma referência a si mesmo para um UserControl. Tive que remover a referência, limpar o projeto e depois reconstruir. O WinForm abre agora!
Doug Knudsen
4

Talvez esta página ajude:

Cenário dois: O IDE do Microsoft Visual Studio 2010 trava ao criar OU depurar um projeto de aplicativo da web. O erro acima ocorre devido ao Cache corrompido do Visual Studio 2010. Para resolver o problema, basta excluir o Cache do projeto do local abaixo:

C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplatesCache

C:\Program Files(x86)\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplatesCache

Em seguida, execute devenv.exe /setuppara reconstruir o cache.

Simon
fonte
Acabei de ter um problema semelhante e isso resolveu para mim. Obrigado Simon! (Estou usando o VS2013, para referência)
JR Smith
4

Doh! Caso outra pessoa receba esse erro ao tentar se conectar a um site do IIS.

Verifique três vezes se o seu nome de host está correto, esqueci uma '/' em (por exemplo) http://my.testsite.com

Tente isso antes de reinstalar o Visual Studio como eu fiz .. Mensagem de erro terrível ..

Marcante
fonte
1
No meu caso, tentei substituir a URL raiz do aplicativo para adicionar um parâmetro GET à URL que foi iniciada. Esse era o lugar errado para fazer isso. Deve ter definido um URL de início na mesma página de propriedades.
Kat
3

Tentei todas as soluções acima, nenhuma funcionou para mim, encontrei a solução aqui

  • Abra ActivityLog.xml acessando

    C:\Users\{UserName}\AppData\Roaming\Microsoft\VisualStudio\15.{Id} 
    
  • Verifique se o erro indica que

    "CreateInstance failed for package 
    [ReferenceManagerPackage]Source: 'mscorlib' Description: Could not load type 
     'Microsoft.VisualStudio.Shell.Interop.' from assembly 
     'Microsoft.VisualStudio.Shell.Interop.11.0' 
    
  • Em seguida, execute este gacutilcomando por meio do prompt do VS Cmd (modo de administrador):

    1. Navegar para

      C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\PublicAssemblies   
      
    2. Corre gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll

código da alvorada
fonte
1
Esta foi a única solução que funcionou para mim (VS 2017 profissional / windows 10). Também vi o erro mscorlib no log de atividades. Reparar e redefinir todas as configurações não funcionou.
Nick Van Brunt
2

Tive o mesmo problema após uma atualização do VS2013 para o VS2015.

O projeto em que eu estava trabalhando se referia a si mesmo. Enquanto o VS2013 não ligou, o VS2015 não gostou disso e eu recebi aquele erro. Depois de excluir a referência, o erro desapareceu. Levei cerca de 4 horas para descobrir isso ...

yiev
fonte
Link agora está morto.
Nome falso de
Obrigado, eu removi o link. Já que a maneira como resolvi esse problema para mim estava logo abaixo do link, pelo menos minha resposta não foi totalmente inútil.
yiev,
2

Parece que para abrir a caixa de diálogo Adicionar Referência no Visual Studio 2017, o Microsoft.VisualStudio.Shell.Interop.11.0.dll precisa ser registrado no GAC. Você pode seguir estas etapas para registrar este assembly no GAC:

Abra o Prompt de comando de desenvolvimento para VS2017 (certifique-se de executar o como administrador, caso contrário, o registro GAC pode falhar)

Altere o diretório atual para a pasta PublicAssemblies para sua instalação do Visual Studio 2017. O meu era:

C: \ Arquivos de programas (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ PublicAssemblies

Execute o seguinte comando para registrar o assembly no GAC:

gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll

C: \ Arquivos de programas (x86) \ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ PublicAssemblies> gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll Microsoft (R) .NET Global Assembly Cache Utility Versão 4.0.30319.0 Copyright (c) Microsoft Corporation. Todos os direitos reservados.

Montagem adicionada com sucesso ao cache

Agora reinicie o VS2017 e tente adicionar uma referência ao seu projeto novamente e você deverá ver a caixa de diálogo Adicionar Referência aparecer.

Para mais esclarecimentos, siga o link abaixo

https://camerondwyer.com/2017/05/03/how-to-fix-the-operation-could-not-be-completed-error-adding-reference-to-visual-studio-2017/#more-2286

Sharad Tiwari
fonte
Depois de todos os esforços. Isso funcionou comigo no primeiro instante.
Yeshwant Mudholkar de
2

Encontrei a solução abaixo em https://developercommunity.visualstudio.com/content/problem/260196/add-a-reference-raise-error-error-hresult-e-fail-h.html endereço.

Funcionou para mim no VS 2019:

1 Abra o "Prompt de comando do desenvolvedor para VS 2017" como Admin

2 CD em "C: \ Arquivos de programas (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ PublicAssemblies"

3 Execute "gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll"

Depois de reiniciar, tudo funcionou bem.

UglukFromIsengard
fonte
1

Eu escrevi um programa simples para abrir uma pasta diferente enquanto clico em alguns botões específicos. Fiz as propriedades do arquivo como "conteúdo" e "copiar se mais recente" para fazer a implantação. Portanto, se eu instalei o arquivo exe no outro software, ele instala todos os seus recursos e executa o programa corretamente. Então, isso é tudo sobre o meu programa. Ao desenvolver isso, às vezes, se eu executar o programa para verificar, ele mostra o erro

"HRESULT E_FAIL foi retornado de uma chamada para um componente COM"

e não consegui abrir a visualização do designer. Mas, de alguma forma, consegui uma solução fácil para mim. Não tenho certeza se funcionará para outro ou não.

Aqui está a solução:

Copie toda a pasta do aplicativo para outro local. clique no arquivo do aplicativo a partir daí. não vai funcionar, pois é apenas uma cópia e você não verá o designer

  1. No explorador de soluções, exclua o form1.vb (ou pode ter um nome diferente se tiver sido alterado durante o desenvolvimento)
  2. No gerenciador de soluções> clique com o botão direito> adicione um item existente> navegue até o arquivo Form1.vb de onde a pasta foi copiada (localização original)
  3. execute o programa no novo local. Vai funcionar

O problema com esta solução se você quiser adicionar algo e depois de executar o programa encontrar o mesmo erro, você deve copiar toda a pasta do aplicativo em outro local novamente e seguir os passos acima

Tousif Ahmed
fonte
1

O erro ocorreu para mim depois de instalar o SDK do Windows 10 mais recente. Eu estava recebendo o erro ao construir um projeto C ++ usando o SDK 8.1. Nas propriedades do projeto, mudo para os 10 SDKs mais recentes. reconstruir. Isso funcionou. Alterado de volta para 8.1. Reconstruir. Sem erro.

Mike L
fonte
1

Basta excluir a pasta de pacotes. Isso me ajudou

alekoo73
fonte
1

Causa raiz: Microsoft.VisualStudio.Shell.Interop.11.0.dll está faltando no GAC.

Solução: 1. Vá para o menu Iniciar e Abra o Prompt de Comando do Visual Studio 2. Digite o comando gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll 3. Caso seu sistema não consiga encontrar este arquivo dll, você pode fazer o download ele do gerenciador de pacotes Nuget e, em seguida, pode fornecer o caminho da dll

Tudo pronto! pressione Enter e pronto!

Dheeraj Bansal
fonte
0

Etapas para resolver o problema:

1. Abra sua solução / aplicativo da Web no VS 2012 no modo de administrador.

2. Vá para o IIS e anote as configurações de seu aplicativo (por exemplo, nome do diretório virtual, caminho físico, configuração de autenticação e pool de aplicativos usado).

3.Remova (clique com o botão direito e selecione Remover) seu aplicativo do site padrão. Atualize o IIS.

4. Volte ao VS 2012 e abra as configurações (clique com o botão direito e selecione propriedades) para seu aplicativo da web.

5.Selecione a seção Web.In Servers, certifique-se de ter selecionado "Use Local IIS Web Server".

6. Na caixa de texto Url do projeto, insira o caminho do aplicativo (http: // localhost/ Caminho do aplicativo). Clique em Criar diretório virtual.

7. Vá para o IIS e aplique as configurações anotadas na etapa 2. Atualize o IIS.

8. Vá para o VS 2012 e defina este projeto como Projeto de inicialização com a página apropriada como página de inicialização.

9.Clique no botão Executar para iniciar o projeto no modo de depuração.

Isso resolveu o problema para mim para o aplicativo da web que foi migrado do VS 2010 para 2012. Espero que isso ajude quem procura um problema específico.

A configuração da minha máquina é: IIS 7.5.7600.16385

VS 2012 Professional

Windows 7 Enterprise (versão 6.1 - Build 7601: Service Pack 1)

Bhushan
fonte
Não estou encontrando nenhum "Web.In Servers" observado na Etapa 5 acima. As únicas "configurações" (etapa 4) são a página de propriedades (Shift-F4), que é referenciada vagamente na etapa 8. Insights?
MacSpudster
0

Isso acontece em nosso servidor de compilação TFS algumas vezes (check-in fechado). É sobre a pasta do espaço de trabalho. Não sei por que, mas às vezes o acesso à pasta do espaço de trabalho está corrompido. O que estou fazendo para corrigir o problema é excluir os espaços de trabalho de construção do TFS e as pastas de espaço de trabalho relevantes. A máquina de construção do TFS cria novos espaços de trabalho para si mesma e o problema é corrigido.

A solução de Tousif Ahmed deve funcionar para compilações locais. Copiar a pasta do aplicativo para outro local deve fazer a mesma coisa que estou fazendo na máquina de construção do TFS.

Levent Sezer
fonte
Não usamos TFS e isso está em outra máquina de desenvolvedor em que temos o problema
Matt,
0

No meu caso, parece que esta mensagem pode ser emitida pelo Intellisense no Visual Studio 2013. A captura de tela abaixo mostra o erro na parte inferior do VisualStudio 2013 após o primeiro carregamento de um projeto do cliente. VS2013 "ERROR-HRESULT-E Screenshot

Comecei a pesquisar no Google o que causa esse erro e decidi tentar excluir os arquivos user.vxproj conforme mencionado acima. No entanto, descobri que o projeto foi construído sem problemas, depois de sair e recarregar o projeto, não recebi mais o erro. Portanto, estou assumindo que, no meu caso, houve algum dano devido à movimentação do projeto da estrutura da árvore do diretório de clientes para a estrutura da árvore do disco de desenvolvimento local. A chave aqui é que, no meu caso, o problema era transitório. Não fiz NADA e o problema pareceu resolver-se sozinho. (Geralmente não é uma coisa desejável, pois eu não consertei nada, então pode voltar).

Ross Youngblood
fonte
Não fui claro em minha resposta. Tentei deletar os arquivos user.vxproj, mas não surtiu efeito. Minha experiência foi que o problema se resolveu sozinho após uma compilação, saia do vs2013 e reinicie. A resposta aceita NÃO funcionou para o meu caso, e parece que o problema pode ser corrigido se você carregar, construir, sair, recarregar.
Ross Youngblood
0

Recentemente, passei cerca de 3 horas tentando corrigir esse problema no meu aplicativo ASP.NET em execução no IIS local. Especifiquei 'Substituir URL raiz do aplicativo' e especifiquei o url com uma barra (/) final, como http://my.dev.com/. Se eu salvasse as opções do projeto e voltasse, ele mostraria o URL de raiz substituído como http://http://my.dev.com. Depois de remover a última barra, ela começou a se comportar bem e o erro foi embora.

Richard Edwards
fonte
0

HRESULT E_FAIL foi retornado de uma chamada para um componente COM

No meu caso, foi porque eu tinha projetos diferentes com o mesmo GUID na minha solução. (O projeto foi criado copiando / colando)

Alix
fonte
0

Meu problema se manifestou ao abrir o arquivo appxmanifest do Win10 (sem trocadilhos). Simplesmente instalando as ferramentas do Windows 10 e o SDK (vá para Novo-> Projeto-> Selecionar Windows-> Ferramentas de Instalação) corrigiu.

Bruno Samardžić
fonte
0
  1. Adicione o desenvolvimento iniciado na arquitetura x86 ou sistema de 64 bits e também será executado no sistema de 32 bits.
  2. mas se você adicionar o desenvolvimento iniciado no sistema de 32 bits e então quiser fazer mudanças no código-fonte em 64 bits. erro:

Contexto de conexão: - A recuperação da fábrica de classe COM para o componente com CLSID {632F4591-AA62-4219-8FB6-22BCF5F60090} falhou devido ao seguinte erro: 80040154 Classe não registrada (exceção de HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

Krishn Kumar Gupta
fonte
0

Corrigi o mesmo problema excluindo a pasta ComponentModelCache

  1. Feche o Visual Studio (se ainda não o fez por desespero)
  2. Abra uma janela do explorador de arquivos e navegue até sua pasta AppData. Você pode chegar lá por:
    1. Na barra de pesquisa, digite %APPDATA%/..e pressione Enter
    2. Alternativamente, navegue para C:\Users\\AppData
  3. Vá para Local\Microsoft\VisualStudio\<version>onde está 12.0 para Visual Studio 2013.
  4. Exclua a pasta ComponentModelCache.

A partir daqui: http://withmartin.net/how-visual-studios-component-model-cache-can-be-a-pain/

user2592899
fonte
0

Não tenho certeza sobre as etapas de reprodução exatas para o erro (HRESULT E_FAIL foi retornado de uma chamada para um componente COM), mas a solução para mim foi:

  1. Feche o Visual Studio e repare-o através do Painel de Controle.
  2. Reiniciar sistema

Após a reinicialização, o erro desapareceu.

Meghan N.
fonte
0

Eu enfrentei o mesmo problema no Visual Studio 2017, siga estas etapas:

  1. Iniciar -> Executar -> regsvr32% SystemRoot% \ System32 \ msxml3.dll

  2. Iniciar -> Executar -> regsvr32% SystemRoot% \ SysWOW64 \ msxml3.dll

  3. Limpe o projeto.

  4. Reinicie o Visual Studio.

    As etapas 1 e 2 foram copiadas da postagem de Besnik Kastrati.

Salman Saleh
fonte
0

Acho que esta resposta clique em Ctrl + Alt + J clique (...) no topo agora você pode adicionar dll de Browse, .Net ou outro. Depois de clicar no botão OK, clique em (adicionar às referências no Projeto selecionado no explorador de soluções) ( este é um botão verde de adição "+")

Behnam Gorbani
fonte
0

Passei por todas as diferentes etapas para corrigir esse problema com o VS2019 16.2.4 e o problema ainda persiste. Eu certamente espero que o MS corrija esse problema, já que isso vem acontecendo há muito tempo.

Acima de adicionar ao Pesquisador de objetos, não consegui descobrir como adicionar a caixa de diálogo de referência nesta versão, pois não consegui encontrar o GAC para 2019.

jasonqw38aus
fonte
0

Recebi este erro ao tentar instalar um pacote nuget que baixei anteriormente e instalei em outro projeto.

Clicar em Limpar todos os cache (s) NuGet em Ferramentas> Opções> Gerenciador de pacotes NuGet resolveu isso para mim

Feijão
fonte
Da mesma forma, remover o conteúdo da pasta de pacotes da solução pode ajudar. No meu caso, eu tinha uma pasta sem nada (provavelmente foi registrada em algum momento) e isso gerou problemas.
K0D4
0

Tive o mesmo problema que ocorreu quando estava trabalhando com a ferramenta VS GUI. O que fiz para consertar foi deletar o repositório local e puxá-lo do meu código-fonte git - obrigado git !! :)

Esta pode não ser a solução em todas as instâncias. mas ao deletar todos os arquivos locais e recompilar, consegui fazê-lo funcionar novamente!

mosborn1987
fonte