Visual Studio 2005: Debug código C # a partir de um projeto diferente?
-
06-09-2019 - |
Pergunta
Eu tenho um aplicativo de desktop que estou desenvolvendo com o Visual Studio onde eu preciso atualizar uma pequena parte do aplicativo em uma base mais freqüente. Para evitar a inconveniência de implantação de um novo instalador de cada vez, eu dividir as funções de apoio mais atualizado com freqüência em um projeto separado e compilado-lo como uma DLL. O aplicativo de desktop agora carrega este DLL em tempo de execução com reflexão e então instancia o objeto dentro dele com base em uma DLL compartilhada com uma definição de interface, como este:
Assembly a = Assembly.LoadFrom(supportDLLPath);
ISupportModuleInterface obj = (ISupportModuleInterface)a.CreateInstance("SupportCode.SupportObject");
if (obj != null)
{
obj.OnTransferProgress += new FileTransferProgressHandler(obj_OnTransferProgress);
obj.OnTransferComplete += new EventHandler(uploader_OnTransferComplete);
obj.DoWork(packagePath)
}
Ele funciona muito bem na maioria das vezes, mas eu preciso para depurar um problema com ele e eu não posso obter de forma confiável o depurador Visual Studio para entrar nele. Às vezes, quando pressionando F11 através do código, como quando pisar em DoWork, ele irá localizar automaticamente o código fonte para o DLL no meu sistema e exibi-lo. No entanto, quando um evento é acionado, Visual Studio exibe apenas o marcador [Código externo] na pilha de chamadas e eu não posso navegar dentro do código no projecto de apoio.
Alguém tem alguma idéia de como consertar isso para que eu possa depurar adequadamente o projecto de apoio? Obrigado!
Solução
é a montagem listados na janela "módulos" (Debug -> Windows -> Módulos, ou pressione "Ctrl-D, M"), e é listado como, com os símbolos carregados do "símbolos carregados." local que você espera? (Você pode forçá-lo a carregar símbolos com o botão direito e selecionar "símbolos de carga ...". Se ele não puder encontrar um arquivo de símbolo que fósforos ele irá pedir-lhe com um "Open ..." diálogo).
Além disso, verifique nesta janela para se certificar de que o módulo is not carregado duas vezes, e que a versão / timestamp / localização do conjunto é o que você esperaria que fosse.
Por fim verificar para ver se "Just My Code" é chcked em "Ferramentas -> Opções -> Depuração"., E ver se desmarcando ele faz a diferença
Outras dicas
Você pode entrar desmontagem? Se assim desde que me lembro, ele vai te dar um caminho para onde o código fonte foi quando APO foi criado. Eu tive que fazer isso para depurar NHibernate e teve que colocar o código fonte no caminho exato onde estava quando o arquivo 'pdb' foi criado. Depois que eu poderia entrar em código-fonte sem problemas.