如何在VS Code中构建nopCommerce插件并设置插件调试断点
VS Code下nopCommerce插件构建与断点调试配置
1. 插件构建操作步骤
- 前置检查:确保nopCommerce核心源码可正常编译运行,你开发的插件项目必须放在源码根目录的
/Plugins文件夹下,不要自定义插件存放的根路径,否则核心程序无法正常扫描识别插件。 - 安装VS Code必要扩展:C# Dev Kit、NuGet包管理器,保证C#代码识别、依赖还原、编译功能正常。
- 核对插件项目的
.csproj配置:所有对nopCommerce核心类库(Nop.Core、Nop.Services、Nop.Web等)的引用必须使用相对路径,不要写本地绝对路径,参考配置如下:
<ItemGroup> <ProjectReference Include="..\..\Libraries\Nop.Core\Nop.Core.csproj" /> <ProjectReference Include="..\..\Libraries\Nop.Services\Nop.Services.csproj" /> <ProjectReference Include="..\..\Presentation\Nop.Web\Nop.Web.csproj" /> </ItemGroup>
- 配置插件输出路径:在
.csproj的PropertyGroup节点下添加输出路径配置,保证编译后的插件文件自动落到Nop.Web的插件运行目录,避免手动拷贝的麻烦:
<PropertyGroup> <OutputPath>..\..\Presentation\Nop.Web\Plugins\你的插件唯一系统名</OutputPath> <OutDir>$(OutputPath)</OutDir> <DebugType>portable</DebugType> </PropertyGroup>
- 执行构建:VS Code终端切到插件项目所在目录,执行
dotnet build -c Debug命令完成编译。编译完成后进入nopCommerce后台插件管理页,点击「重新加载插件」,列表中能看到你开发的插件即为构建成功。
2. 插件断点调试配置步骤
- 前置确认:插件必须使用Debug配置编译,Release模式编译出的dll无完整调试符号,会导致断点无法命中。
- 配置调试启动文件:打开VS Code调试面板,选择「创建launch.json文件」,运行环境选择对应版本的.NET/.NET Core,将配置内容替换为如下内容,注意替换里面的.NET版本号为你本地nopCommerce运行依赖的版本(比如.NET 6、.NET 7等):
{ "version": "0.2.0", "configurations": [ { "name": "nopCommerce 调试", "type": "coreclr", "request": "launch", "preLaunchTask": "build", "program": "${workspaceFolder}/Presentation/Nop.Web/bin/Debug/net6.0/Nop.Web.dll", "args": [], "cwd": "${workspaceFolder}/Presentation/Nop.Web", "stopAtEntry": false, "env": { "ASPNETCORE_ENVIRONMENT": "Development" }, "justMyCode": false } ] }
注意:配置项里的
justMyCode必须设置为false,否则调试器默认不会加载非核心项目的插件调试符号,断点会一直显示为空心未命中状态。
- 打调试断点:打开插件的业务代码文件,在需要暂停调试的代码行号左侧点击,出现红色实心圆点即代表断点添加完成。
- 启动调试:按
F5启动调试会话,等站点完全启动后,操作前台/后台触发对应插件的业务逻辑,代码执行到断点位置时会自动暂停,此时即可查看上下文变量、执行单步调试操作。 - 常见断点不命中排查:如果断点显示为空心,依次检查三个点:一是插件编译后的dll是否正确输出到Nop.Web的Plugins对应目录,有没有存在旧版本dll残留;二是插件加载后有没有在后台点过重新加载,站点是否还在运行旧版插件代码;三是
.csproj里的DebugType有没有被设为none,导致调试符号没生成。
内容的提问来源于stack exchange,提问作者Sangeet Shah
相关产品推荐
相关产品推荐

