代码之家  ›  专栏  ›  技术社区  ›  Robert Höglund

元数据文件…在生成项目时找不到错误

  •  97
  • Robert Höglund  · 技术社区  · 17 年前

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

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

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

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

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

    你知道是什么导致了这个问题吗?

    21 回复  |  直到 17 年前
        1
  •  133
  •   Robert Harvey    16 年前

    生成/配置管理器

        2
  •  26
  •   Chris T.    16 年前

    这通常是由于项目引用的解决方案与抛出错误的解决方案不同。如果清除其他解决方案或分支代码,则很可能会看到此错误。解决方案是向下滚动“未找到元数据”错误列表,并查看对项目的引用。9/10次,您将看到对不在此解决方案中的项目的断开引用。添加项目以修复引用错误,然后重新生成。这应该可以解决问题。

    (我今天才遇到这个问题,过去也遇到过,而且一直有效)

        3
  •  7
  •   Shaun DAmico Shaun DAmico    17 年前

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

    对我来说,解决方案是找出我有两个同名的项目,它们被意外地复制了,删除了对旧的不正确项目的引用,并添加了对新项目的引用。

    在任何情况下,这些消息似乎都有点刺耳,我会检查您的构建输出,找到第一个未能构建的项目,并非常仔细地检查该项目上的引用。

        4
  •  6
  •   Paul Ehmig    15 年前

    另一个要验证的是路径长度。。。这也会导致找不到元数据文件和编译错误。。。我刚刚将文件夹重命名为较短路径,瞧,这些类没有被识别,保持为黑色,只需重命名文件夹,它们就会变成蓝色。

        5
  •  5
  •   Josh P    14 年前

        6
  •  3
  •   Dan    13 年前

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

    我发现,如果在解决方案资源管理器中右键单击解决方案并选择“构建顺序”,则可以看到VS用于重建解决方案的顺序。很可能是出了毛病。

    您可以通过单击Dependencies选项卡并选择依赖于解决方案中其他项目的项目并检查它们所依赖的项目来更正生成顺序。一旦你点击OK并重建了解决方案,你就可以开始了。

        7
  •  2
  •   WestDiscGolf    16 年前

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

    干杯

        8
  •  2
  •   Umar Farooq Khawaja    15 年前

    我有几点想说。

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

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

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

    我曾经有过几个例子,我不得不手动调整项目在解决方案文件中的显示顺序,以及项目在解决方案文件中网站项目的ProjectReferences元素中列出的顺序。

        9
  •  2
  •   lithium6941    15 年前

    例如,如果您使用LinqtoSQL数据上下文,并且.designer.cs文件丢失,则会出现元数据文件找不到错误。

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

    在某些情况下,如果您的数据上下文的代码中有代码隐藏,这种变通方法将不起作用。在这种情况下,将代码从后面的代码中取出,放在记事本或其他东西中。执行添加然后从DC中删除一行并保存的技巧。现在将代码放回并保存。

        10
  •  2
  •   Alba Mendez    14 年前

    每次从SVN更新项目时,我都会遇到类似的问题。

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

    我也经历过这个错误,原因是项目引用了它自己。我不知道这是怎么发生的,但我只是删除了引用,瞧

        12
  •  1
  •   Haseeb Sd    12 年前

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

    在这种情况下,如果您已经在“生成”下选择了所有项目->配置管理器菜单, 重新启动VS技巧对您也不起作用,因为您必须在项目中找到文件的引用(可能是dll或cs)并手动删除这些引用。这些文件/参考应以黄色图标显示。该错误明确地指导您应该研究哪个解决方案项目。

        13
  •  1
  •   Eddie Edwards    10 年前

    在我的例子中,我发现我的一个解决方案是引用计算机上没有的东西(VBIDE)。一旦我删除了有问题的引用,其余的项目就会正确构建。希望这能帮助别人。

    在另一种情况下,我将一些代码从一个项目转移到另一个项目,这段代码引用了Json.net。我手动添加了一个对Json.net的引用,但这导致了问题的出现。我通过NuGet安装Json.net解决了这个问题,解决了这个问题。希望这能帮助别人。

        14
  •  0
  •   Ryan    16 年前

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

        15
  •  0
  •   Richard S.    16 年前

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

        16
  •  0
  •   Jingyu Lei    16 年前

    当我想包含由Matlab生成的dll文件时,我遇到了保存问题。最后,我通过复制一个.ctf文件(我想这意味着证书)和一个.netmodule(正确操作.dll所需)以及.dll文件来解决这个问题。这确实奏效了! 因此,我的建议是检查.dll是否需要其他文件。

        17
  •  0
  •   Matt    13 年前

    Windows 7 Ultimate 32 Visual Studio 2008 SQL Server v2005

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

    祝你好运

        18
  •  0
  •   Darrell Cumming    13 年前

        19
  •  0
  •   Bishoy Hanna    13 年前

    EE

        20
  •  0
  •   Ryan    12 年前

        21
  •  0
  •   Vikram    12 年前

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


    详细方法:

    好的,我下面的答案不仅仅是所有解决方案的总结,它还提供了更多。

    第(1)节:

    在一般解决方案中:

    我有4个此类错误(找不到元数据文件),还有1个错误是“无法打开源文件(未指定错误)”。

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

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

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

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

    4. “解决方案资源管理器” . 右键单击解决方案。去 “项目依赖项…” . 您将看到两个选项卡: “建立秩序”

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

      检查丢失的.dll的路径。如果路径包含空格或任何其他无效路径字符,请将其删除,然后重试生成。

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


    第(2)节:

    我尝试了上面所有的步骤,用不同的排列和组合重新启动VS几次。但是,这对我没有帮助。

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

    我尝试了博客中提到的步骤,并消除了错误 令人惊讶的是,我排除了其他错误


    第(3)节:

    故事的寓意:

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