Windows 8.1 Enterprise x64、Visual Studio 2015、MVC 5、EF 6、使用 git 的 VS Online
我是一个相对较新的 Visual Studio 开发人员(大约九个月),自从我开始使用引用和 NuGet 包以来,我经历了一段难以置信的困难时期。当我周末关闭计算机时,我所有的引用资料都在周五正常工作。我整个周末都没有碰电脑,现在我今天启动了,但我有一大堆引用错误:
(总共有 6,262 个错误,但我显然无法截取整个内容。)
正如我所说,这种问题经常发生,令人非常沮丧。我尝试过的事情:
- 确保所有抛出错误的引用都被引用
- 卸载/重新安装在 NuGet 中抛出错误的包
- 彻底删除
packages
文件夹中的内容,让NuGet恢复(全部重新安装,view和之前一样报错) - 确保每个引用设置为
Copy Local
- 关闭解决方案,删除所有
bin
和obj
文件夹,重新启动计算机,清理,重建 - 确保所有必要的引用都在相关的
web.config
中(在Views
中或在根目录中) - 检查 NuGet 选项以恢复丢失的包(没有出现,所有包都在我本地的
packages
文件夹中) - 关于 SO 的其他事情,我确定我忘记在这里列出
我对这些包和引用资料束手无策。每次都是不同的修复,这次我搞不明白。我是否遗漏了一些明显的修复,我忽略了什么?有没有办法在它工作时以某种方式进行备份并在出现问题时恢复它?任何想法,无论是帮助解决当前问题还是解决潜在问题,我们都将不胜感激。
补充说明
问题不仅在于 View —— Controller 也会抛出错误。具体来说:
The type or namespace name 'Controller' could not be found (are you missing a using directive or an assembly reference?)
(字面意思是 Controller
,这不是我为了隐私或其他原因而更改的内容。)
尽管我对所有必要的命名空间都有 using
语句,但仍会抛出这些错误。 using
语句本身可以正常工作,但代码中会抛出错误。建议的自动修复是手动引用所有内容:例如,var sb = new StringBuilder();
希望我将行更改为 var sb = new System.Text.StringBuilder();
。测试该修复并不能解决问题,会抛出相同的错误,但在 System
而不是 StringBuilder
上。
额外要求的信息
- 我将 git 与 VS Team Services 结合使用(但是
.gitignore
会忽略包)。 - 我和另外一个人正在处理这个问题,但另一个人在几个星期内根本没有触及它(甚至没有从远程存储库中拉取数据)。
.csproj
文件中的引用格式为..\..\..\packages\
(相对于的位置正确。 csproj
文件)。- 以 .NET 4.6 为目标(一直都是,这不是新的)
- 所有引用都解析,引用列表中没有感叹号。
最佳答案
新项目
为了让包在 git 中正常工作,你需要做一件事:
创建存储库时,请确保添加为 Visual Studio 开发量身定制的 .gitignore。你可以谷歌搜索这样的文件或者从here中获取。 .
这将确保您不会提交任何会在以后引起问题的内容。
这应该可以解决很多在将包 checkin 代码存储库时通常会发生的问题。您可以添加/删除包和升级包,还可以将存储库克隆到新机器上,包将自动恢复。
现有项目
这对新项目很有用。如果您的项目已经一团糟,那么修复它就非常困难,因为 Visual Studio 将包版本保存在多个位置 - packages.config 和 app.config(以及相关的 web.config)。
选项 1 - 修复当前项目
您可以删除所有包(从所有项目中删除所有引用并删除包内容)。
确保包不再出现在任何文件中(例如 packages.config 或 app.config)。现在添加 .gitignore,然后开始添加包。
选项 2 - 创建一个新项目
如果它不起作用,启动一个新项目,添加 .gitignore,传输所有代码(仅您的代码)并安装包。
关于c# - 一劳永逸地修复 NuGet 包和引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34269976/