修改PowerShell代码后仍执行旧版本的问题求助
PowerShell模块类修改后不生效的问题解决
问题本质
通过Using module导入的自定义类会被加载为当前PowerShell会话的.NET类型,而.NET类型一旦加载到会话的AppDomain中,就无法在同一会话内卸载或重新定义。这就是修改TestRunner.psm1的Execute方法后,执行脚本仍输出旧内容的核心原因——旧的类类型依然驻留在会话内存中,新的修改无法覆盖。
解决办法
最可靠的方式:使用全新会话执行
每次修改类文件后,打开新的PowerShell窗口,或在VS Code中新建终端运行脚本。彻底隔离旧会话的缓存,确保加载最新的类定义。尝试手动清理会话(仅部分场景有效)
若不想重启会话,可尝试先移除相关模块,但注意:已加载的类类型无法彻底从会话中清除,后续可能仍存在冲突:# 移除相关模块 Remove-Module TestRunner, Logger -Force -ErrorAction SilentlyContinue # 重新运行脚本 .\StartTestRunner.ps1优化错误信息显示
- 启用详细错误视图,获取文件路径和行号:
$ErrorView = 'DetailedView' - 开启严格模式,捕获更多潜在错误:
Set-StrictMode -Version Latest
- 启用详细错误视图,获取文件路径和行号:
内容的提问来源于stack exchange,提问作者edwarddeath
相关产品推荐
相关产品推荐

