我依赖于特定的 nuget 包。当我更新我的解决方案以使用新的包版本并将解决方案提交/推送到远程 GIT 存储库时,解决方案的其他贡献者在拉取之后仍然使用旧 DLL 版本的 nuget 包,即使激活了包恢复。但是,当他们打开 CSPROJ 文件时,它显示引用应该是新版本。如果 bin/obj 文件夹中使用的 DLL 与 csproj 文件中引用的 DLL 不匹配,Visual Studio 基本上不会生成任何警告/错误。为了更简洁:
- 解决方案使用 DLL 版本 0.5
- 我通过 Nuget 升级到 DLL 版本 0.6
- 我的 Visual Studio 显示使用了 0.6 版
- 我向 GIT 提交/推送解决方案
- 另一位同事从 GIT 中提取解决方案
- 他的 Visual Studio 显示 DLL 版本 0.5,没有错误/警告
- 他的 CSPROJ 文件引用了 DLL 版本 0.6
- 由于内部实现发生变化,解决方案在运行时失败
我们如何解决这个问题:
- 同事删除他的 bin/obj
- Visual Studio 注意到缺少 DLL
- 他在解决方案级别使用管理 Nuget 包,然后单击确定,没有别的
- Nuget 下载 DLL 并解决问题
现在这真的是愚蠢的解决方法,在我看来这应该是自动化的。是否有什么我们可能做错了导致这种情况发生?