C# VSIX模板使用自定义Wizard时出现程序集引用错误,求解决方案
自定义项模板关联Wizard报错排查方案
- 检查
WizardExtension标签配置正确性
首先确认你已经为Wizard类库启用强名称签名,否则无法生成合法的公钥令牌,也无法被VS正常加载。vstemplate文件中WizardExtension标签的配置必须和编译后的Wizard程序集完全匹配,示例配置如下:
同时注意项模板的<WizardExtension> <Assembly>WizardDemo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=abc123def456ghi7</Assembly> <FullClassName>WizardDemo.CustomItemWizard</FullClassName> </WizardExtension>WizardExtension标签必须放在<TemplateContent>节点之后,放置位置错误会直接触发加载报错。 - 验证Wizard类库依赖兼容性
实现IWizard接口的类库必须引用对应版本的Microsoft.VisualStudio.TemplateWizardInterface程序集,版本要和你目标使用的VS版本匹配,高版本依赖无法在低版本VS中加载。同时类库的目标架构要和VS安装架构匹配,32位VS无法加载64位类库,推荐编译为Any CPU架构。 - 确认Wizard程序集部署路径正确
VS无法直接读取模板压缩包内或者模板同级目录下的Wizard程序集,必须将编译后的Wizard类库部署到VS可探测的路径:要么加入全局程序集缓存(GAC),要么放入VS安装目录下的Common7\IDE\PrivateAssemblies文件夹,这是最常见的报错诱因。 - 运行时调试定位异常
配置无误的情况下可通过调试定位具体问题:启动VS实验实例,在Wizard项目中附加到实验实例的devenv.exe进程,在RunStarted等IWizard接口实现方法的入口处加断点,触发模板创建流程即可直接捕获Wizard运行时抛出的具体异常。 - 适配项模板的参数逻辑
项模板和项目模板的Wizard接收参数存在差异,不要直接复用项目模板的Wizard逻辑不加修改,比如$rootnamespace$等参数的取值逻辑在项模板场景下和项目模板不同,参数取值失败也会触发运行时报错。
内容的提问来源于stack exchange,提问作者user16690597
相关产品推荐
相关产品推荐

