0

我依赖于特定的 nuget 包。当我更新我的解决方案以使用新的包版本并将解决方案提交/推送到远程 GIT 存储库时,解决方案的其他贡献者在拉取之后仍然使用旧 DLL 版本的 nuget 包,即使激活了包恢复。但是,当他们打开 CSPROJ 文件时,它显示引用应该是新版本。如果 bin/obj 文件夹中使用的 DLL 与 csproj 文件中引用的 DLL 不匹配,Visual Studio 基本上不会生成任何警告/错误。为了更简洁:

  1. 解决方案使用 DLL 版本 0.5
  2. 我通过 Nuget 升级到 DLL 版本 0.6
  3. 我的 Visual Studio 显示使用了 0.6 版
  4. 我向 GIT 提交/推送解决方案
  5. 另一位同事从 GIT 中提取解决方案
  6. 他的 Visual Studio 显示 DLL 版本 0.5,没有错误/警告
  7. 他的 CSPROJ 文件引用了 DLL 版本 0.6
  8. 由于内部实现发生变化,解决方案在运行时失败

我们如何解决这个问题:

  1. 同事删除他的 bin/obj
  2. Visual Studio 注意到缺少 DLL
  3. 他在解决方案级别使用管理 Nuget 包,然后单击确定,没有别的
  4. Nuget 下载 DLL 并解决问题

现在这真的是愚蠢的解决方法,在我看来这应该是自动化的。是否有什么我们可能做错了导致这种情况发生?

4

1 回答 1

1

GITforVS不考虑 nugget 包(不在\obj\bin文件夹中构建生成的文件)。

通过以下注释 (#) 行Git来管理版本控制文件的包:edit .gitignore

# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
#!packages/*/build/

(注意:如果你想备份和重命名.gitignore文件,去那里

于 2013-10-12T08:58:07.040 回答