Erro: Você pode receber uma "COMException (0x80010105): O servidor emitiu uma exceção" mensagem de erro no Visual Studio .NET 2003

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 888325
Sintomas
No Microsoft Visual Studio .NET 2003, se você automatizar seu aplicativo para execução fora de processo, você receberá uma COM exceção de mensagem de erro semelhante à seguinte do componente fora de processo devenv.exe:
Exceção não tratada: System.ApplicationException: falha---> System.Runtime.Int
eropServices.COMException (0x80010105): O servidor emitiu uma exceção. em EnvDTE._Solution.Open (String FileName) em DTEAutomation.Class1.Main (String [] args) em c:\vs7play\enterprisetemplate\ dteautomation\class1.cs:line 45
Fim---do rastreamento de pilha de exceção interna---no DTEAutomation.Class1.Main (String [] args) em c:\vs7play\enterprisetemplate\ dteautomation\class1.cs:line 80
Causa
Esse problema ocorre porque um ponteiro em cache para os dados selecionados não é válido. Em seguida, o projeto de modelo de empresa é aberto.
Como Contornar
Para contornar este problema, use um dos seguintes métodos.

Método 1

Abra a propriedade MainWindow como visíveis antes de abrir o projeto de modelo de empresa. Para fazer isso, adicione o seguinte exemplo de código antes da instrução solution.Open no seu código.
solution.DTE.MainWindow.Activate();

Método 2

Oculte a janela Solution Explorer antes de abrir o projeto de modelo de empresa. Para fazer isso, altere a instrução solution.Open para ser semelhante ao seguinte exemplo de código.
Window w = cls.DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer);w.Visible=false;solution.Open(solutionFileName);w.Visible=true;
Situação
A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados na seção "Aplica-se a".
Mais Informações

Informações de pilha de chamada

Quando esse problema ocorre, você pode observar uma pilha de chamada é semelhante à seguinte:

msenv!CVsUIHierarchyBaseWin::UpdateSelCtx+0xfamsenv!CWinSelection::SelectItem+0x73msenv!CVsUIHierarchyBaseWin::ExpandItem+0x19amsats10!CHierNode::ExtExpand+0xc8msats10!TSBaseFileViewNode::AddVirtualProjectWrapper+0x4dmsats10!TSBaseFileViewNode::AddVirtualProjectWrapper+0x93msats10!TSProject::OpenChildren+0xcemsenv!CSolution::Open+0xdaemsenv!CVSolution::Open+0xa2

Etapas para reproduzir o problema

  1. Start Visual Studio .NET 2003.
  2. Clique em arquivo , aponte para novo e, em seguida, clique em Project .
  3. Na caixa de diálogo New Project , clique em Outros projetos , clique em Projetos da empresa modelo e, em seguida, clique em Visual Basic simples Distributed Application .
  4. Feche a solução.
  5. Clique em arquivo , aponte para novo e, em seguida, clique em Project .
  6. Na caixa de diálogo New Project , clique em projetos translation from VPE for Csharp Visual e clique em Windows Application .
  7. Adicione o seguinte código para o projeto Microsoft Windows Application que você criou na etapa 6.

    Observação Substitua a seqüência de caracteres solutionFileName pelo caminho da solução que você criou na etapa 3.
    [STAThread]		static void Main(string[] args)		{			const string DEFAULT_VISUAL_STUDIO_PROGID = "VisualStudio.Solution.7.1";			string progID = DEFAULT_VISUAL_STUDIO_PROGID;			Solution solution;			try			{					Type t = Type.GetTypeFromProgID(progID);				object obj = Activator.CreateInstance(t, true);				Solution cls = (Solution)obj;								string solutionFileName = @"C:\vs7play\enterprisetemplate\Project3\Project3.sln";								solution = cls;				solution.Open(solutionFileName);			}}			catch(Exception ex)			{				throw new ApplicationException(String.Format("Failed", progID), ex); 			}		}
  8. Execute o aplicativo de console.
Você receber a mensagem de erro mencionada na seção "Sintomas".

Propriedades

ID do Artigo: 888325 - Última Revisão: 05/20/2005 21:54:47 - Revisão: 1.3

Microsoft Visual Studio .NET 2003 Enterprise Architect, Microsoft Visual Studio .NET 2003 Enterprise Developer, Microsoft Visual Studio .NET 2003 Academic Edition

  • kbmt kbcompiler kbprogramming kbtshoot kbbug KB888325 KbMtpt
Comentários