构建项目时无法找到元数据文件...错误

时间:2008-11-30 18:11:25

标签: visual-studio-2008

每次启动Visual Studio 2008时,第一次尝试运行项目时都会收到错误CS0006无法找到元数据文件。如果我重建完整的解决方案就行了。

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

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

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

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

  • 我对另一个解决方案有同样的问题。

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

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

有关导致此问题的原因的任何想法?

21 个答案:

答案 0 :(得分:132)

我有类似的问题,“无法找到元数据”。在solution属性上,确保为每个项目在 Build / Configuration Manager 中标记“build”复选框。

答案 1 :(得分:26)

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

(我今天刚刚遇到这个问题,过去一直都是这样,而且总是有效)

答案 2 :(得分:7)

我有这个问题,不确定它是否会有所帮助,但我的是由两个不同解决方案引用的同一项目的两个不同版本引起的。当我构建解决方案并引用正确的项目时,第二个解决方案将构建正常,但是,如果我清理了第一个解决方案并尝试构建第二个解决方案,它将失败并显示这些dll引用错误消息。

我的解决方案是弄清楚我有两个同名的项目,这些项目是偶然重复的,删除了对旧的错误项目的引用,并添加了对新项目的引用。

在任何情况下,似乎这些消息都是一个红色的鲱鱼,我会检查你的构建输出并找到第一个无法构建的项目,并仔细检查该项目的引用。

答案 3 :(得分:6)

要验证的另一件事是路径长度...导致元数据文件未找到和编译错误...我只是将我的文件夹重命名为较短的路径和voilá,类别无法识别并保持黑色,变为蓝色只需重命名文件夹即可。

答案 4 :(得分:5)

对我来说,我在另一个项目中引用了一个项目。它没有显示它在解决方案资源管理器窗口的引用列表中已被破坏,但我仍然删除并重新读取它。它现在建立得很好!

答案 5 :(得分:3)

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

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

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

答案 6 :(得分:2)

我过去在VS2005以及刚刚在VS2008中解决这个问题的方法是确保所有依赖都是正确的,并且引用指向项目而不是dll。然后通过依赖顺序手动构建每个项目。一旦最后一个构建,您就可以运行完整的解决方案构建并且很好。

这个答案供其他人参考,因为我知道这个问题超过15个月。

干杯

答案 7 :(得分:2)

我想提出几点意见。

如果您依赖解决方案文件作为MSBuild下的构建文件,请确保按照您希望构建它们的顺序将项目添加到解决方案文件中,即基于项目的相互依赖顺序。如果您在解决方案中有其他项目所依赖的项目,则这变得非常重要,但引用已添加为“引用”而不是“项目引用”。

你应该像瘟疫那样避免这种情况,但是如果你确实需要这样做,那么至少要确保依赖项目在解决方案文件中出现得更早。

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

我有几个实例,我必须手动调整项目在解决方案文件中出现的顺序,以及项目在解决方案中的Web站点项目的ProjectReferences元素中列出的顺序文件。

我希望以上信息有所帮助。

答案 8 :(得分:2)

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

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

答案 9 :(得分:2)

例如,如果您使用LinqtoSQL数据上下文,并且缺少.designer.cs文件,则无法找到元数据文件错误。

重新创建designer.cs文件很简单。

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

在某些情况下,如果您在数据上下文的代码隐藏中有代码,则此解决方法将无效。在这种情况下,从后面的代码中取出代码并将其放在记事本或其他东西中。添加然后从DC中删除一行并保存的技巧。现在把代码放回去保存。

答案 10 :(得分:1)

我也遇到过这个错误,原因是Project正在引用它自己。我不知道它是怎么发生的,但我刚刚删除了参考文件

答案 11 :(得分:1)

首先确保在Build - >中标记了“build”复选框。每个项目的配置管理器。

如果您已经在Build - >下选择了所有项目。 Configuration Manager菜单, 并重启VS技巧对你不起作用,你必须在你的项目中找到文件的引用(可能是dll或cs)并手动删除这些引用。那些文件/参考应显示黄色图标。该错误肯定会指导您应该研究哪个解决方案项目。

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

答案 12 :(得分:1)

就我而言,我发现我的一个解决方案是引用计算机上没有的东西(VBIDE)。一旦我删除了违规的参考,其余的项目正确建立。希望有所帮助。

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

答案 13 :(得分:0)

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

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

一旦我将数据库引用重置为正确的设置,我就能够在没有进一步问题的情况下构建。此外,这是我在VSS中分支源代码后首次尝试重建此项目。

祝你好运

答案 14 :(得分:0)

当我想要包含由Matlab生成的dll文件时,我遇到了保存问题。最后我通过复制一个.ctf文件来解决它,这意味着我想要的证书,以及一个.net模块,它是正确操作.dll以及.dll文件所需要的。这实际上有效! 所以,我的建议是检查.dll是否需要任何其他文件来配合。

答案 15 :(得分:0)

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

答案 16 :(得分:0)

我有这个错误,这是由我的项目依赖项之一导致的,其中程序集名称已在项目中更改,但引用未更新。因此,更新引用或重新命名程序集将修复它。

答案 17 :(得分:0)

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

答案 18 :(得分:0)

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

答案 19 :(得分:0)

同样的事情发生了。我有几个引用相同库项目的解决方案(.net 3.5)。我注意到一个是在debug / normal config中构建的,另一个是使用其他编译器指令(sqlite / local mode),这会发生。只需使用相同的指令构建两个项目,您应该没问题。

答案 20 :(得分:0)

从.csproj文件中删除源控件和文件系统中不再存在的所有源文件的条目。


详细方法:

嗯,我的以下答案不仅仅是所有解决方案的摘要,而且还提供了更多。

第(1)节:

一般解决方案:

我有4个这类错误(找不到“元数据文件”)以及1个错误,说“源文件无法打开”('未指定错误')'。

我试图摆脱'无法找到元数据文件'的错误。为此,我阅读了许多帖子,博客等,发现这些解决方案可能有效(在此汇总):

  1. 重新启动VS并尝试重新构建。

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

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

  4. 构建订单和项目依赖关系:

    转到'解决方案资源管理器' 。右键单击Solution。转到'项目依赖关系......' 。您会看到2个标签:'依赖关系' '建立订单' 。此构建顺序是构建解决方案的顺序。检查项目依赖项和构建顺序,以验证某个项目(例如' project1')是否依赖于其他项目(例如' project2')是否正在尝试在该项目之前构建(project2) 。这可能是导致错误的原因。

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

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

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


  6. 第(2)节:

    我的具体案例:

    我尝试了上述所有步骤,其中包含各种排列和组合,重启VS几次。但是,它没有帮助我。

    所以,我决定摆脱我遇到的其他错误('源文件无法打开('未指定的错误')')。

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

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


    第(3)节:

    故事的道德:

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