0

我正在使用一个wpf应用程序。我使用BootLoader方法预先加载所有dll。当我把断点放入我的一个DLL时。我无法调试,我的断点没有命中,断点也没有被禁用。如何在使用visual studio 2015预加载时调试dll

所有选项都是正确的。即使模块选项卡显示加载符号和组装的PDB文件是在同一位置

enter image description here

private readonly ConcurrentDictionary<string, Assembly> _libs; 
      public App() 
      { 
       _libs = new ConcurrentDictionary<string, Assembly>(); 
       BootLoader(); 
      } 
private void BootLoader() 
     { 
      Assembly a; 
      foreach (var dll in new DirectoryInfo(System.AppDomain.CurrentDomain.BaseDirectory + @"\..\..\").GetFiles("*.dll", SearchOption.AllDirectories)) 
      { 
       if (!_libs.TryGetValue(dll.Name, out a)) 
       { 
        if (!_libs.TryAdd(dll.Name, Assembly.LoadFile(dll.FullName))) 
        { 
         Logger.Error($"CurrentDomain_AssemblyResolve: could not add {dll.Name} in assembly list"); 
        } 
       } 
      } 

请协助。

+0

您能否澄清一下“我无法调试”? –

+0

@AlexeiLevenkov:更新了问题。我的断点没有命中,它们也启用 – vishal

+0

你在哪里实际调用dll内的代码。加载不执行它。 – codenheim

回答

1

确保每个程序集的pdb文件位于相同的位置。

+0

是的,它们与dll位于同一位置 – vishal

0

当我们开始在Visual Studio中调试我们的应用程序时,Visual Studio会尝试在所有的断点命中之前加载所有的汇编符号文件。所以你的问题与Symbol文件加载无关。

请确保您处于调试模式,而不是在您首先开始调试时的发布模式下。 并根据您提供的示例代码,BootLoader()方法中有任何条件。请确保您添加的断点是满足If条件语句或超出条件语句块。

相关问题