我正在使用 VS 2019 (16.8.4) 开发模块化 blazor 应用程序 (5.0.2),其结构如下:
所有项目都有一个构建后事件,用于将 DLL 和 PDB 文件复制到特定路径,例如D:\TMP。
SubSolution 通过此路径引用 MainRCL 库。
Main Wasm 项目也通过此路径引用 SubRCL 库(用于在startup/Program.cs 中添加服务)。
MainRCL 没有对 SubRCL 的引用(组件根据可配置的 UI 定义通过反射/BuildRenderTree() 进行渲染)。
调试主解决方案工作完美(IIS Express/应用程序调试)。
然后我尝试调试 SubModules -> 我从 MainSolution 开始调试并打开此 VS 实例中 SubModules 项目中的文件。
在某些库中,调试可以正常工作,但对于 SubRCL(“未绑定断点”)则不行。然后我能够使用示例解决方案重现这个(非常奇怪的)问题:
“MainRCL”提供 2 个属性:
[AttributeUsage(AttributeTargets.Class)]
public sealed class TestNoEnumAttribute : Attribute
{
public string Name { get; set; }
public string Mode { get; set; }
public TestNoEnumAttribute(string name, string mode)
{
Name = name;
Mode = mode;
}
}
[AttributeUsage(AttributeTargets.Class)]
public sealed class TestEnumAttribute : Attribute
{
public string Name { get; set; }
public EventExecutionMode Mode { get; set; }
public TestEnumAttribute(string name, EventExecutionMode mode)
{
Name = name;
Mode = mode;
}
}
public enum EventExecutionMode
{
AutomaticAll = 0,
ManualConfiguration = 2
}
SubRCL 在测试方法中使用这些属性:
[TestNoEnum("Test", "EventExecutionMode.ManualConfiguration")]
//[TestEnum("Test", EventExecutionMode.ManualConfiguration)]
public class Module1Test
{
public int IncreaseNum(int num)
{
var x = new Part1();
var part1Num = x.DoStuff(num);
var newNum = part1Num + 1;
return newNum;
}
}
被调用的类“Part1()”位于 SubSolution 的另一个库中
Part1 类中“DoStuff()”方法处的断点始终会被命中(在单独的 .net5 库中)。
仅当 [TestEnum] 属性为NOT用过的。
一旦使用了[TestEnum]属性,就会出现一个“Unbound Breakpoint”;另一个库中的“DoStuff()”方法中的断点仍然被命中。
然后我尝试“添加现有项目”到 SubSolution 并添加 MainWasm 项目并直接从 SubSolution -> 相同的行为开始调试。
我有什么需要监督的吗(例如,关于 DLL 引用或 PDB 文件复制)?
这已经是我尝试调试这些模块化结构解决方案的第二种方法 - 首先我尝试通过 IIS 进行调试(如何通过附加到 Chrome 来使用 VS 在 IIS 上调试 Blazor Webassemble?),但这也没有成功。