VSIX项目引用类库加载失败问题求助
解决VSIX自动加载包时的强命名程序集错误
这个错误0x80131044的核心原因很明确:Visual Studio要求通过ProvideAutoLoad特性标记的自动加载包,其依赖的所有程序集必须是强命名的。你的类库TestLibrary没有强命名,所以VS在加载包时直接拒绝了它。
下面是具体的解决步骤:
1. 为类库项目生成强命名密钥
- 右键你的
TestLibrary类库项目,选择属性 - 切换到签名选项卡,勾选「为程序集签名」
- 在「选择强命名密钥文件」下拉框中选择新建,输入密钥文件名(比如
TestLibraryKey.snk),可选择是否设置密码,点击确定 - 重新生成类库项目,此时输出的
TestLibrary.dll就是强命名的程序集了
2. 更新VSIX项目的引用和资产配置
- 如果你之前是直接引用类库项目,重新生成VSIX项目即可自动同步强命名后的程序集;如果是手动引用dll文件,删除旧引用,重新添加强命名后的
TestLibrary.dll - 打开
.vsixmanifest文件,确保TestLibrary作为Microsoft.VisualStudio.Assembly类型的资产被添加,并且AssemblyName字段包含强命名后的完整程序集信息(公钥令牌不再是null)
3. 验证强命名是否生效
打开Visual Studio开发者命令提示符,执行以下命令查看程序集的公钥令牌:
sn -T TestLibrary.dll
执行后会返回一串公钥令牌字符串,说明强命名已经成功生效。
补充说明
VS对自动加载的包有更严格的安全校验,强命名是为了确保程序集的完整性和不可篡改。哪怕你的类库已经放在扩展目录、也添加了资产配置,缺少强命名这一步,VS仍然会拒绝加载。完成强命名后重新部署VSIX扩展,加载解决方案时包就能正常加载了。
内容的提问来源于stack exchange,提问作者twilker
相关产品推荐
相关产品推荐

