Eu tenho um projeto (A) que faz referência a um assembly de uma biblioteca de classes de projeto externo (B) que está localizada em outra solução vs.
Ainda tenho que entender como eu posso depurar eficientemente a biblioteca de classes de B durante a execução do programa do projeto A. Existe algo que eu preciso habilitar no projeto B, como informações de depuração etc. para que eu possa entrar no momento da depuração de A?
Desde já, obrigado.
fonte
Isso me incomodou por algum tempo. O que costumo fazer é reconstruir minha biblioteca externa usando o modo de depuração e copiar os arquivos .dll e .pdb na lixeira do meu site. Isso me permite entrar no código da biblioteca.
fonte
Assuma o caminho de
Projeto
A
Projeto
B
e a dll do ProjectB está em
Para depurar no
ProjectB
fromProjectA
, faça o seguinteB
a DLL com DLL.PDB
para oProjectA
diretório de compilação.ProjectA
. Quando o código atingir a parte em que você precisa chamar o método ou os eventos da DLL, etc. durante a depuração, pressioneF11
para entrar no código da DLL.NOTA: NÃO FAZER COPIAR O ARQUIVO .PDB
fonte
Eu corro duas instâncias do visual studio - uma para a dll externa e outra para o aplicativo principal.
Nas propriedades do projeto da dll externa, defina o seguinte:
Construir eventos:
copy /y "$(TargetDir)$(TargetName).dll" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).dll"
copy /y "$(TargetDir)$(TargetName).pdb" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).pdb"
Depurar:
Inicie o programa externo:
C:\<path-to-main>\bin\debug\<AppName>.exe
Diretório de trabalho
C:\<path-to-main>\bin\debug
Dessa forma, sempre que eu construo a dll externa, ela é atualizada no diretório do aplicativo principal. Se eu clicar em debug do projeto da dll externa - o aplicativo principal é executado, mas o depurador atinge apenas pontos de interrupção na dll externa. Se eu depurar o debug do projeto principal, o aplicativo principal será executado com a dll externa mais recente, mas agora o depurador atingirá apenas pontos de interrupção no projeto principal.
Percebo que um depurador fará o trabalho para ambos, mas acho mais fácil manter os dois corretos dessa maneira.
fonte
[de acordo com Martin Beckett, o cara que me enviou esta resposta]
Você pode depurar em uma biblioteca externa.
Na guia configurações do projeto, procure por 'diretórios do visual studio' no campo 'código-fonte' e inclua o caminho para as fontes openCV. Em seguida, verifique se os arquivos .pdb para cada uma das DLLs de depuração estão no mesmo diretório que a DLL.
fonte
Eu estava tendo um problema semelhante, pois meus pontos de interrupção no projeto (B) não estavam sendo atingidos. Minha solução foi reconstruir o projeto (B) e depois depurar o projeto (A), pois as DLLs precisavam ser atualizadas.
O Visual Studio deve permitir a depuração em uma biblioteca externa.
fonte
Referências NuGet
Suponha que as referências -Project_A (produz project_a.dll) -Project_B (produz project_b.dll) e Project_B ao Project_A pelos pacotes do NuGet, copiem apenas project_a.dll, project_a.pdb para a pasta Project_B / Packages. Com efeito, isso deve ser copiado para o / bin.
Agora depure o Project_A. Quando o código atingir a parte em que você precisa chamar o método ou os eventos da DLL, etc. durante a depuração, pressione F11 para entrar no código da DLL.
fonte