我正在开发一个wpf应用程序。我在BootLoader方法中提前加载所有dll。当我把断点放在我的一个dll中时。我无法调试,我的断点没有命中,断点似乎也没有禁用。
所有选项都是正确的。甚至模块选项卡显示已加载的符号,而程序集的pdb文件位于同一位置
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 :(得分:1)
确保每个程序集的pdb文件位于同一位置。
答案 1 :(得分:0)
当我们在Visual Studio中开始调试我们的应用程序时,Visual Studio将尝试在所有断点命中之前加载所有程序集符号文件。因此,您的问题与符号文件加载无关。
首先开始调试时,请确保您处于调试模式,而不是处于发布模式。
根据您提供的示例代码,BootLoader()方法中有任何条件。请确保您添加的断点