Foi um sorteio se esta pergunta é GIS.SE ou StackOverflow ... Eu vou com GIS.SE porque o problema parece estar no ArcCatalog.
Eu tenho vários suplementos que foram escritos para o ArcCatalog (e também o ArcMap); anteriormente eu era capaz de F5 depurar o código usando pontos de interrupção agora todos os meus pontos de interrupção estão inativos com a mensagem O ponto de interrupção não será atingido no momento. Nenhum símbolo foi carregado para este documento :
Eu tentei as sugestões do Stack Overflow:
e também
Por que o ponto de interrupção não pode ser "atingido" ao depurar um complemento do ArcGIS 10? mas isso parece ser um problema diferente.
Como este é um Addin (dll), não há projeto de inicialização. Eu limpei todas as outras versões. Fiz uma alteração sutil no arquivo Esriaddinx message=
para confirmar que as alterações estavam sendo feitas - tudo bem, não existe uma versão mais antiga.
Durante a limpeza, notei que os suplementos do ArcCatalog são copiados para o local %USERPROFILE%\Documents\ArcGIS\AddIns\Desktop10.X\{AddInID}\
onde não estão os suplementos do ArcMap. Tentei copiar o arquivo pdb para a pasta de suplementos, mas parece que o código não está mais sendo depurado e o ArcCatalog mudou / redirecionou para a cópia.
Existe uma maneira de depurar com suplementos de pontos de interrupção para o ArcCatalog? Observe que os complementos do ArcMap e aplicativos independentes são depurados muito bem.
Meio Ambiente:
- Windows 7 64bit
- ArcGis 10.1
- Visual Studio 2010 Professional (VB.net e C #)
fonte
Respostas:
Atualizando meu comentário inicial para uma resposta:
Eu tive um problema semelhante com o ArcMap 10.3 em combinação com o Visual Studio 2013. Encontrei as mesmas postagens que @ michael-miles-stimson mencionou e, de fato, em um ponto, eu poderia realmente depurar e atingir um ponto de interrupção. Mas, por algum motivo, isso parou de funcionar depois de um tempo e não havia como fazê-lo funcionar novamente.
Por fim, reverti a estrutura de destino no meu projeto de .Net 4.5 para .Net 3.5 e configurei o supportedRuntime no .exe.config para v2.0.50727. Isso resolveu para mim.
Se o complemento ArcCatalog usa 4.5 e o ArcMap one 3.5, isso explicaria o comportamento explicado na pergunta.
Eu acho que não importa se você usa a versão Cliente ou Versão Completa, eu sempre uso a Versão Completa, porque a certa altura, sempre sinto falta de uma classe que não está na versão Cliente.
fonte
Na verdade, os complementos do Arcmap também são copiados para esse local após a instalação (ou um Build in Visual studio).
Para resolver esse problema, tente estas etapas:
Limpe toda a sua solução no visual studio clicando com o botão direito do mouse na solução e escolha Limpar solução
se o seu projeto de suplemento arccatalog depender de outros assemblies de terceiros, verifique se esses assemblies têm arquivos .pdb (símbolo) ao lado deles
No visual studio, se você tiver outros projetos em sua solução em que seu projeto arccatalog depende deles, adicione a referência do projeto em vez das dlls. como esta imagem:
fonte
Ok, acabei de verificar que sou capaz de percorrer o código usando esse processo.
Estou fazendo isso no ArcMap, mas acho que deve se aplicar ao ArcCatalog, pois o processo lida com DLLs de depuração e não com um item específico da ESRI.Eu confirmei isso no ArcMap 10.2.2 e no ArcCatalog 10.2.2. Como este é um processo do Windows que lida com DLLs diretamente, as versões do software ESRI não devem importar.Estou usando o Visual Studio para anexar a um processo .
Eu sou capaz de percorrer uma extensão compilada (DLL) usando esse processo quando a DLL é invocada em outro programa.
Aqui está o que estou fazendo ...
No Visual Studio, abra seu projeto de extensão. Criei minha extensão no VS 2010 C # Express, mas estou usando o VS 2013 Ultimate para fazer isso. Não tenho certeza se Anexar ao processo é uma opção na versão 2010 Express. Eu não vi, mas poderia estar escondido em algum lugar, pois era a versão Express.
Abra o seu produto ESRI e instale o suplemento. Agora, de volta ao VS, clique em Anexar ao processo e selecione o processo do seu produto ESRI. O meu era o ArcMap.exe . A partir daqui, o Visual Studio deve anexar seu depurador ao programa e, quando a DLL for executada, aberta e com pontos de interrupção definidos, ela será interrompida por aí. Isso funcionará como qualquer outro programa que você está depurando no Visual Studio. Ele pode esticar alguma depuração em alguns dos itens ESRI embora o código é mais provável ofuscado por isso não tão útil.
Certifiquei-me de instalar o suplemento do diretório Release para o meu projeto. Até onde eu sei, a ESRI não copia a DLL em uma de suas pastas, mas eles usam o Esri Assembly Registration Utility para registrar a localização da DLL, para que o sistema saiba onde encontrá-la quando referenciada em um produto ESRI.
FYI: Eu uso esse processo para depurar bibliotecas de classes que escrevo em um projeto que estão sendo utilizadas em outro. A mesma teoria deve aplicar os suplementos ESRI, pois são apenas DLLs (bibliotecas de classes) sendo chamadas para outro programa. Além do Visual Studio, acredito que qualquer outro depurador do Windows possa se conectar à DLL.
Por favor, postar comentários sobre este. Eu pensei que isso funcionaria por um tempo e estou muito curioso para ver como os outros são justos com esse método.
EDIT Acabei de criar um novo suplemento ArcCatalog, que consiste em um botão simples. Adicionei uma atribuição de sequência
string stophere = "debugger stopped!";
no manipulador de eventos para o evento de clique do botão. Por meio do ArcCatalog, ele parou de usar o método Attach to Process . As informações do Visual Studio 2010 sobre o processo estão aqui .Existem algumas coisas no MSDN sobre depuração de DLLs através de vários métodos no Visual Studio e no Windows Debugger. Pessoalmente, acho o Attach to Process melhor do que iniciar um método de programa externo e também melhor do que usar o depurador remoto .
A única desvantagem desse método é que você perde a abordagem F5 onde você depura diretamente de dentro do Visual Studio. Isso significa que, faça alterações no seu código, instale a atualização, inicie o ArcCatalog, Anexe ao Processo e atinja seus pontos de interrupção. No entanto, acho que esse método é muito bom de se saber se você tiver problemas como o seu. Esse processo pode demorar um pouco mais, mas é um método infalível para obter resultados.
fonte
Este é um arquivo que eu criei ao longo de alguns anos discutindo com as extensões ArcMap e ArcCatalog e, em seguida, Add-Ins:
Coisas que podem impedir o ArcMap de depurar suplementos no Visual Studio:
fonte
Aqui está a solução:
Tente remover o SupportedRuntime do arcmap.exe.config, no diretório bin.
Este é o arquivo xml \ ArcGIS \ Desktop10.0 \ bin \ arcmap.exe.config.
Por que o ponto de interrupção não pode ser "atingido" ao depurar um complemento do ArcGIS 10?
fonte
Alguns passos óbvios (suponho que você já tenha tentado isso ... mas ainda assim).
fonte