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條件語句或超出條件語句塊。

相關問題