解决多NuGet程序集强签名prerequisite错误及旧版本引用残留问题
解决NuGet包旧版本残留导致的强签名错误问题
清理本地NuGet缓存
打开Visual Studio 2017的「工具」→「选项」→「NuGet包管理器」→「常规」,点击「清空所有NuGet缓存」;或者以管理员身份打开命令提示符,执行命令:nuget locals all -clear,彻底清除本地缓存的旧包文件。检查并修正项目引用配置
- 打开项目的
packages.config文件,查找是否存在对应包的旧版本条目,若有则直接删除该条目,保存后重新加载项目。 - 右键项目→「卸载项目」,然后右键编辑
.csproj文件,搜索指向C:\Users\MyName\.nuget\packages\的<Reference>或<PackageReference>节点,删除所有旧版本的引用条目,确保所有引用的HintPath都指向项目本地的C:\repos\My Project\packages\路径。
- 打开项目的
检查解决方案级NuGet配置
查看解决方案根目录下的NuGet.Config文件,检查是否存在异常的包源配置或版本绑定规则,若有多余的包源或强制绑定旧版本的规则,直接删除或注释掉相关内容。清除Visual Studio组件缓存
完全关闭Visual Studio,删除以下目录的文件:%LOCALAPPDATA%\Microsoft\VisualStudio\15.0_<你的VS实例ID>\ComponentModelCache%LOCALAPPDATA%\Microsoft\VisualStudio\15.0_<你的VS实例ID>\Temp
重启Visual Studio后重新生成整个解决方案。
检查并清理全局程序集缓存(GAC)
以管理员身份打开命令提示符,执行命令:gacutil /l | findstr "你的包名称",如果查找到旧版本的程序集在GAC中,使用命令gacutil /u "程序集全名, Version=旧版本号, Culture=neutral, PublicKeyToken=对应公钥"将其卸载(程序集全名、版本号和公钥令牌可从对象浏览器的旧版本属性中获取)。手动删除本地NuGet包目录的旧版本
直接导航到C:\Users\MyName\.nuget\packages\,找到对应包的文件夹,删除其中旧版本的子目录,只保留项目当前使用的版本。
内容的提问来源于stack exchange,提问作者boilers222
相关产品推荐
相关产品推荐

