如果使用visual studio 2015预先加载,我该如何调试dll

时间:2017-08-24 05:47:14

标签: c# wpf visual-studio visual-studio-2015 visual-studio-debugging

我正在开发一个wpf应用程序。我在BootLoader方法中提前加载所有dll。当我把断点放在我的一个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");
                    }
                }
            }

请协助。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

当我们在Visual Studio中开始调试我们的应用程序时,Visual Studio将尝试在所有断点命中之前加载所有程序集符号文件。因此,您的问题与符号文件加载无关。

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