一劳永逸地修复NuGet包和引用

vai*_*dil 21 c# visual-studio nuget visual-studio-2015 azure-devops

使用git的Windows 8.1 Enterprise x64,Visual Studio 2015,MVC 5,EF 6,VS Online

我是Visual Studio的一个相对较新的开发人员(大约九个月),自从我开始以来,我在使用引用和NuGet包时遇到了非常困难的时期.我周五关闭计算机时,所有参考文献都在正常工作.我整个周末都没有触摸电脑,现在我已经启动了,我有很多参考错误:

错误列表

(总共有6,262个错误,但我显然无法截断整个事情.)

就像我说的那样,这种问题经常发生,而且非常令人沮丧.我试过的事情:

  • 确保引用实际抛出错误的所有引用
  • 取消/重新安装在NuGet中抛出错误的软件包
  • 完全删除packages文件夹的内容,让NuGet恢复它们(所有重新安装,视图都有与以前相同的错误)
  • 确保将每个引用设置为Copy Local
  • 关闭解决方案,删除所有binobj文件夹,重新启动计算机,清理,重建
  • 确保所有必要的引用都在相关内容web.config(在内部Views或根部)
  • 检查NuGet选项以恢复丢失的包(未显示,所有包都在我的本地packages文件夹中)
  • 关于其他事情,我确信我已经忘记在这里列出了

这些软件包和参考资料让我很有智慧.每次都是一个不同的修复,这次我无法弄明白.我错过了一些明显的修复,我忽略了什么?有没有办法以某种方式在这个工作时进行备份,并在事情发生时恢复它?任何想法,无论是帮助解决当前问题还是解决潜在问题,都将非常感激.

附加说明

问题不仅在于视图 - 控制器也在抛出错误.特别:

找不到类型或命名空间名称'Controller'(您是否缺少using指令或程序集引用?)

(它字面上说Controller,这不是我为了隐私而改变的东西.)

尽管我有using所有必要命名空间的语句,但这些都被抛出.该using语句本身工作正常,但错误的代码中引发.建议的自动修复是手动引用所有内容:例如,var sb = new StringBuilder();要我将行更改为var sb = new System.Text.StringBuilder();.测试该修复程序不能解决问题,抛出相同的错误,System而不是StringBuilder.

其他要求的信息

  • 我在VS Team Services中使用git(但忽略了包.gitignore).
  • 我和另外一个人在这方面工作,但另一个人在几周内根本没有触及它(甚至没有从远程仓库拉出来).
  • .csproj文件中的引用采用格式..\..\..\packages\(相对于.csproj文件的位置是正确的).
  • 针对.NET 4.6(一直都是,这不是新的)
  • 所有引用都解析,引用列表中没有感叹号.

dar*_*ala 5

新项目

为了使包与git一起正常工作,你需要做一件事:

创建存储库时,请确保添加为Visual Studio开发定制的.gitignore.您可以在谷歌搜索此类文件或从此处获取.

这将确保您不会提交任何会导致以后出现问题的内容.

这应解决当您将包签入代码存储库时通常会发生的许多问题.您可以添加/删除包和升级包,也可以将存储库克隆到新计算机,并自动还原包.

现有项目

这对新项目很有用.如果你已经有一个非常混乱的项目,那么很难修复它,因为Visual Studio将包版本保存在几个地方 - packages.config和app.config(以及相关的web.config).

选项1 - 修复当前项目

您可以删除所有包(从所有项目中删除所有引用并删除包内容).

确保包不再出现在任何文件中(例如packages.config或app.config).现在添加.gitignore,然后开始添加包.

选项2 - 创建一个新项目

如果它不起作用,启动一个新项目,添加.gitignore,传输所有代码(只有你的代码)并安装包.

  • _"从现在开始,你将不会遇到任何问题" - 这是错误的,当你唯一的行动是向`.gitignore`添加正确的条目时,很多问题都是可能的.包版本也不保存在app/web.config中. (2认同)

小智 2

我不太熟悉 Git 在 VS 中的工作原理,但我记得最近有一次使用 TFS 将解决方案与源代码控制解除绑定,修复所有包,在再次绑定之前进行清理和重新构建,解决了一系列有关 NuGet 的问题参考。

如果 Git 在 VS 中的工作方式有所不同,我深表歉意。