Visual Studio - 在编辑后继续获取错误"无法找到元数据文件'XYZ'

Avi*_*ner 71 c# configuration edit-and-continue visual-studio visual-studio-2012

我偶然发现了一个非常烦人的问题.
当我调试我的软件时,一切运行正常,但如果我点击断点并编辑代码,当我尝试继续运行时,我收到一个错误:
Metadata file 'XYZ' could not be found

看了一会儿之后,我发现了一些类似的问题,但它们都是关于构建失败的,这不是我的情况(这只发生在edit-continue之后).

到目前为止我尝试了什么:

  • 我的代码正在编译和运行.
  • 我清理了解决方案并重新启动了VS.
  • 我确保正在为正在运行的配置构建缺少的文件项目(在配置管理器中).
  • 我手动构建了丢失文件的项目.

一些额外的信息:

  • 无论我改变什么,仍然会得到相同的错误(更改与丢失的文件无关).
  • 当我暂停并继续(不仅是断点)时也会发生这种情况
  • 我正在使用自定义配置(配置管理器...)运行项目.当我使用默认Debug配置运行它时,不会发生错误.

有任何想法吗?

Avi*_*ner 102

最终解决了这个问题的是:

  1. 单独清洁每个项目(右键单击 > 清除).
  2. 单独重建每个项目(右键单击 > 重建).
  3. 重建启动项目.

我想由于某种原因,只是清洁解决方案与单独清理每个项目有不同的效果.

编辑:
根据@maplemale评论,似乎有时需要删除和重新添加每个引用.

更新2019:
这个问题在过去得到了很多流量,但似乎自VS 2017发布以来,它的关注度却低得多.
所以另一个建议是 - 更新到VS的更新版本(> = 2017)以及其他新功能这个问题也将得到解决

  • 我必须这样做,但需要额外的一步.所以,我的启动项目在解决方案中引用了其他类库/ dll项目.我必须单独清理每一个并重建,但之后还必须删除并重新添加每个引用.这似乎是VS 2013特定问题.我从来没有在2012年或2010年做过这样的事情. (10认同)
  • 是的...我有近70个项目 - 没有这样做 (5认同)

Ben*_*lde 41

据我所知,当项目依赖项因任何原因而被搞砸时(包括所有项目间的引用仍然完整),就会发生这种情况.在许多情况下,它不是代码问题.对于那些拥有多个项目的人来说,一次一个地进行这些项目是不可接受的.

重置项目依赖项很容易 -

  1. 选择所有项目,然后右键单击卸载
  2. 选择所有项目,然后右键单击重新加载
  3. 重建解决方案

对于那些在代码中遇到问题或者导致此问题的其他问题的人,您显然必须首先解决该问题.

  • 实际上是@Ben Wilde,每当我在git中获得分支时,我都必须这样做.你有没有找到永久的解决方案? (2认同)

JSK*_*JSK 14

一个可能的原因可能是你已经将一些项目(在解决方案中)升级到更高版本,例如从.NET 4.0升级到4.5这种情况发生在我的情况下,当我在VS 2013中打开解决方案时(最初使用VS 2010和.NET创建) 4.0).当我在VS 2013中打开时,我的C++项目已更新到.NET 4.5,我开始看到问题所在.


小智 10

一般来说,这种错误会带来人为错误,例如我们以某种不正确的方式更改命名空间,或者从资源管理器中为当前项目等更改文件夹名称,而编译器有时无法检测到这些错误.

我遇到了同样的错误,解决了我尝试了几步的问题.请按照以下步骤操作:

  1. 清洁整个解决方案
  2. 右键单击解决方案中的每个项目,转到属性并使默认命名空间以及默认程序集名称与代码中的相同(即类名称前的命名空间)
  3. 通过浏览器检查每个项目的文件夹名称(项目解决方案所在的位置).如果与项目名称不匹配,请使它们与它们类似(如步骤2).
  4. 从与相同解决方案的另一个项目相关的每个项目中删除所有引用,然后重新添加.
  5. 在Project Solution文件夹中,您将找到Visual c#Project文件.右键单击并使用记事本打开.在您的初始行中,您将找到每个项目的行,如下所示:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "**Client**", "**Client** \ **Client**.csproj", "{4503E259-0E3B-414A-9074-F251684322A5}" EndProject

再次检查Foldernames(我已在BOLD中突出显示)并使其与您在步骤2中执行的操作类似.

  1. 再次清洁整个解决方案

  2. 构建解决方案(如果不起作用尝试再次清洁后建立个人)

  • 在Visual Studio 2013中遇到此问题,第4步为我工作! (3认同)

小智 7

确保所有依赖项目都使用相同的.Net Framework版本.我有一个由使用4.5.1的依赖项目引起的相同问题,而所有其他人都使用4.5.将项目从4.5.1更改为4.5并重建我的解决方案为我解决了这个问题.


San*_*tos 5

无法找到 XYZ,因为尚未构建....

右键单击解决方案并检查项目依赖项,项目构建顺序也应根据已设置的依赖项进行更改。