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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top