建立专案时出现中继资料档案…找不到错误


98

每次我启动Visual Studio 2008时,第一次尝试运行项目时,都会出现错误CS0006元数据文件...。如果我重新构建完整的解决方案,它将起作用。

有关解决方案的一些信息:

  • 我在调试模式下进行构建,Visual Studio抱怨在发布文件夹中找不到dll:s。

  • 解决方案中的许多其他项目都使用Visual Studio抱怨的项目。

  • 我已将所有项目的默认输出路径分别更改为...... \ build \ debug \ ProjectName和...... \ build \ release \ ProjectName。(只需将所有构建文件放在一个目录中)

  • 我在另一个解决方案中也遇到了同样的问题。

  • 该解决方案是从头开始创建的。

  • 解决方案中有9个项目。一个使用dotnet 3.5的WPF和8个类库。

关于导致此问题的原因有什么想法?


Answers:


133

我遇到了类似的问题,即“找不到元数据”。在解决方案属性上,确保在“ 构建/配置管理器”中为每个项目标记“构建”复选框。


16
对于找不到它的任何人,“构建/配置管理器”指的是“构建”菜单->“配置管理器”菜单项。
约翰·库拉克

4
我刚遇到这个问题,原因是另一个错误导致引用的项目无法成功构建。这是一个干净的结帐,因此之前的成功构建都没有dll文件。解决错误,并确保正确构建了引用的项目。
Moulde 2013年

9
正如尼克在上文中指出的那样,有时这甚至也无济于事。在那种情况下,关闭和重新启动VS一直对我有用。YMMV。
philofinfinitejest 2013年

3
没有解决问题。我重新启动了VS,但无法解决问题。
Shimmy Weitzhandler 2013年

26

这通常是由与引发错误的解决方案不同的解决方案中引用的项目引起的。如果您清洗其他解决方案或分支代码,则很可能会看到此错误。解决方案是向下滚动“未找到元数据”错误的列表,并查看对项目的引用。9/10次,您会看到对该解决方案中没有的项目的引用损坏。添加项目以修复参考错误,然后重新生成。那应该解决它。

(我只是今天遇到过这种情况,过去曾遇到过,并且这种情况一直有效)


只有我解决方案中的项目在抱怨。
松饼人2012年

7

我遇到了这个问题,不确定是否会有所帮助,但是我的问题是由同一项目的两个不同版本被两个不同解决方案引用引起的。当我首先使用对正确项目的引用构建解决方案时,第二个解决方案将很好构建,但是,如果我清理了第一个解决方案并尝试构建第二个解决方案,它将因这些dll参考错误消息而失败。

对我来说,解决方案是弄清楚我有两个名称相同的项目被意外复制,然后删除了对旧的不正确项目的引用,并添加了对新项目的引用。

无论如何,这些消息似乎有点麻烦,我将检查您的构建输出并找到第一个无法构建的项目,并非常仔细地检查该项目的引用。


1
对于这些消息的不正确之处,请+1。之所以这样,是因为解决方案中引用的程序集路径已断开。读取它们并重新编译即可解决问题。
E. Rodriguez

6

验证的另一件事是路径长度...这也导致找不到元数据文件和编译错误...我只是将文件夹重命名为较短的路径和样式,这些类未被识别并保持黑色,仅通过重命名就变为蓝色文件夹。


5

对我来说,我在另一个项目中引用了一个项目。它没有显示它在解决方案资源管理器窗口的引用列表中已损坏,但无论如何我都将其删除并重新读取。现在它构建良好!


确实,我删除了所有引用并再次添加了它们。

3

我在VS2012中经历了所有这些步骤,但是在整体构建解决方案时(每个项目构建得很好,没有错误),我一直遇到这个问题。

我发现,如果在解决方案资源管理器中右键单击解决方案,然后选择“构建顺序”,则可以看到VS用于重建解决方案的顺序。这很可能不合时宜。

您可以通过单击“依赖关系”选项卡并选择依赖于解决方案中其他项目的项目并检查它们依赖的项目来更正构建顺序。一旦确定并重建解决方案,您就应该做好了。


2

我过去在VS2005中以及现在在VS2008中解决此问题的方式是确保所有依赖关系都是正确的,并且引用指向的是项目而不是dll。然后遍历并按依赖顺序手动构建每个项目。一旦完成了最后一个构建,您就可以运行完整的解决方案构建及其功能。

我知道这个问题已经存在15个月了,因此该答案可供其他人参考。

干杯


2

我想提出几点。

如果要依赖解决方案文件作为MSBuild下的构建文件,请确保按照要构建的顺序(即基于项目的相互依赖关系的顺序)将项目添加到解决方案文件中。如果您的解决方案中有其他项目所依赖的项目,那么这将变得非常重要,但是参考已添加为“参考”而不是“项目参考”。

您应该像瘟疫一样避免这种情况,但是如果确实需要这样做,那么至少要确保从属项目出现在解决方案文件的前面。

您应该记住,Visual Studio生成构建顺序的方式与MSBuild生成的顺序并不完全相同。这是因为MSBuild主要依赖于项目文件来告知依赖项是什么,而Visual Studio也可以将它们保存在soltuion文件中。因此,有时您会看到Visual Studio完美地构建解决方案而MSBuild却做不到的情况。

我有几个实例需要调整项目在解决方案文件中的显示顺序以及项目在解决方案文件的Web站点项目中的ProjectReferences元素中列出的顺序。

希望以上信息对您有所帮助。


2

例如,如果您使用LinqtoSQL数据上下文,并且缺少.designer.cs文件,您将得到找不到元数据文件的错误。

重新创建designer.cs文件很容易。

使用xml视图打开dbml。添加一个空白行,然后将其删除,然后保存。那应该重新生成您的designer.cs文件。

在某些情况下,如果您在数据上下文的代码内包含代码,则无法解决此问题。在这种情况下,从后面的代码中删除代码,然后将其放在记事本中。做一些技巧,然后从DC中删除一条线并保存。现在放回代码并保存。


2

每次我从SVN更新项目时,我都会遇到类似的问题。
ASP.NET的另一个解决方案:

  1. 关闭IDE。
  2. 删除中的文件C:\WINDOWS\microsoft.net\framework\v…\Temporary ASP.NET File\

1

我也遇到了此错误,原因是该项目正在引用自身。我不知道它是怎么发生的,但我删除了参考文献,瞧


1

首先,确保在“构建”->“配置管理器”中为每个项目标记“构建”复选框。

如果您已经在“构建”->“配置管理器”菜单下选择了所有项目,并且重新启动VS技巧对您不起作用,则必须在其中找到文件的引用(可以是dll或cs)您的项目并手动删除这些引用。这些文件/参考应以黄色图标显示。该错误肯定会指导您应考虑的解决方案项目。

出现此错误的原因是因为您已在Windows资源管理器中手动删除了文件,而VS尚未更新引用并尝试查找不再存在的文件!


1

就我而言,我发现我的解决方案之一是引用计算机上没有的内容(VBIDE)。一旦删除了有问题的参考,其余项目就可以正确构建。希望能对某人有所帮助。

在另一种情况下,我将一些代码从一个项目移到了另一个项目,而那段代码引用了Json.net。我手动添加了对Json.net的引用,但这使问题得以解决。我通过通过NuGet安装Json.net来解决了该问题,从而使问题消失了。希望能对某人有所帮助。


0

同样的事情发生了。我有几个引用相同库项目(.net 3.5)的解决方案。我注意到,当其中一个是在debug / normal config中构建的,而另一个是使用其他编译器指令(sqlite / local模式)构建的时,就会发生这种情况。只需使用相同的指令构建两个项目,就可以了。


0

如果您已将新项目添加到解决方案中,请检查它是否在构建列表中(请参阅配置管理器)


0

当我想包含Matlab生成的dll文件时,我遇到了保存问题。最后,我通过复制一个.ctf文件(即我认为的证书)和一个.netmodule(与该.dll文件一起正常运行所必需的.netmodule)来解决了该问题。确实有效!因此,我的建议是检查.dll是否还需要其他文件。


0

Windows 7旗舰版32 Visual Studio 2008 SQL Server v2005

我收到了同样的错误。我决定删除并重新添加项目引用。我无法将它们重新添加回去,因为每个引用的项目中的数据库引用都是空白的。

将数据库引用重置为正确的设置后,就可以进行构建而不会产生更多问题。另外,这是我在VSS中分支了源代码之后,第一次尝试重建该项目。

祝好运


0

我遇到此错误,是由于我的项目依赖项之一引起的,其中项目中的程序集名称已更改,但引用未更新。因此,更新参考或重命名装配件将对其进行修复。


0

EE-在我的情况下,问题出在具有Entity框架的项目中,打开该图并拖动任何表格2 cm :)并保存,VS将更新其与数据库的所有链接...构建此项目并构建解决方案,Buildssss。


0

解决我的唯一问题(因为我没有在管理员帐户上运行VS2010)是手动将环境变量VS120COMNTOOLS从系统变量移动到用户变量。


0

从您的.csproj文件中删除源代码管理和文件系统中不再存在的所有源文件的条目对我来说都是可行的。


详细方法:

好吧,我的以下回答不仅是所有解决方案的总结,而且还提供了更多的解决方案。

第(1)节:

一般解决方案:

我遇到了4个此类错误(“找不到元数据文件”)以及1个错误:“无法打开源文件(“未指定错误”)”。

我试图摆脱“找不到元数据文件”错误。为此,我阅读了许多帖子,博客等,发现这些解决方案可能是有效的(在此处进行总结):

  1. 重新启动VS,然后再次尝试构建。

  2. 转到“解决方案资源管理器”。右键单击解决方案。转到属性。转到“配置管理器”。检查是否选中“构建”下的复选框。如果未选中任何一个或全部,请检查它们并尝试再次构建。

  3. 如果上述解决方案不起作用,请按照上面第2步中提到的顺序进行操作,即使所有复选框都已选中,也请取消选中它们,再次检查并尝试重新构建。

  4. 建立订单和项目依赖性:

    转到“解决方案资源管理器”。右键单击解决方案。转到“项目依赖项...”。您将看到2个选项卡:'Dependencies''Build Order'。此构建顺序是解决方案的构建顺序。检查项目依赖性和构建顺序,以验证是否有依赖于其他项目(例如“ project2”)的某个项目(例如“ project1”)在该项目(project2)之前尝试构建。这可能是导致错误的原因。

  5. 检查缺少的.dll的路径:

    检查丢失的.dll的路径。如果路径包含空格或任何其他无效的路径字符,请将其删除并尝试再次构建。

    如果这是原因,则调整构建顺序。


第(2)节:

我的特殊情况:

我尝试了上述所有步骤,并进行了各种排列和组合,并重新启动了VS几次。但是,它没有帮助我。

因此,我决定摆脱遇到的其他错误(“无法打开源文件(“未指定错误”)”)。

我遇到了一个博客:http : //www.anujvarma.com/tfs-errorsource-file-could-not-be-opened-unspecified-error/#comment-1539

我尝试了该博客中提到的步骤,并且摆脱了错误“无法打开源文件(未指定错误”),并且令人惊讶的是,我也摆脱了其他错误(“找不到元数据文件”)


第(3)节:

故事的道德启示:

尝试使用上面第(1)节中提到的所有解决方案(以及任何其他解决方案)以消除错误。如果没有任何效果,则按照上面第(2)节中提到的博客,从.csproj文件中删除源控件和文件系统中不再存在的所有源文件的条目


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.