元数据文件...构建项目时找不到错误
Posted
技术标签:
【中文标题】元数据文件...构建项目时找不到错误【英文标题】:Metadata file ... could not be found error when building projects 【发布时间】:2010-09-24 15:43:52 【问题描述】:每次启动 Visual Studio 2008 时,我第一次尝试运行项目时都会收到错误 CS0006 The metadata file ... could not be found。如果我重建完整的解决方案,它就可以工作。
关于解决方案的一些信息:
我正在调试模式下构建,Visual Studio 抱怨在发布文件夹中找不到 dll:s。
Visual Studio 抱怨的项目被解决方案中的许多其他项目使用。
我已将所有项目的默认输出路径分别更改为......\build\debug\ProjectName 和......\build\release\ProjectName。 (只是为了将所有构建文件放在一个目录中)
我在使用另一种解决方案时遇到了同样的问题。
解决方案是从头开始创建的。
解决方案中有 9 个项目。一个 WPF 和 8 个使用 dotnet 3.5 的类库。
关于导致此问题的任何想法?
【问题讨论】:
***.com/a/17723774/1724702 【参考方案1】:我遇到了“找不到元数据”的类似问题。在解决方案属性上,确保在构建/配置管理器中为每个项目标记了“构建”复选框。
【讨论】:
对于找不到的人,Build/Configuration Manager 指的是 Build menu -> Configuration Manager 菜单项。 我刚遇到这个问题,原因是另一个错误导致引用的项目无法成功构建。这是一个干净的结帐,所以以前成功的构建中不存在 dll 文件。修复错误并确保正确构建引用的项目。 有时即使这样也无济于事,正如上面尼克所说。在那种情况下,关闭并重新启动 VS 一直对我有用。 YMMV。 没有解决问题。我重新启动了 VS 并没有解决问题。【参考方案2】:这通常是由在与引发错误的解决方案不同的解决方案中引用的项目引起的。如果您清理其他解决方案或分支代码,您很可能会看到此错误。解决方案是向下滚动“找不到元数据”错误列表,并查看对项目的引用。 9/10 次,您将看到对不在此解决方案中的项目的损坏引用。添加项目以修复参考错误并重建。那应该可以解决它。
(我今天刚遇到这个,过去也遇到过,这一直有效)
【讨论】:
只有我的解决方案中的项目在抱怨。【参考方案3】:我遇到了这个问题,不确定它是否会有所帮助,但我的问题是由两个不同的解决方案引用同一项目的两个不同版本引起的。当我首先使用对正确项目的引用构建解决方案时,第二个解决方案将构建良好,但是,如果我清理第一个解决方案并尝试构建第二个解决方案,它将失败并显示这些 dll 引用错误消息。
对我来说,解决方案是找出我有两个同名的项目被意外复制,然后删除对旧的不正确项目的引用并添加对新项目的引用。
无论如何,这些消息似乎有点牵强,我会检查您的构建输出并找到第一个构建失败的项目,并非常仔细地检查该项目的引用。
【讨论】:
+1 表示有关这些消息不准确的说明。这对我来说突然出现了,因为解决方案中引用的程序集的路径被破坏了。阅读它们并重新编译解决了问题。【参考方案4】:要验证的另一件事是路径长度......这也会导致找不到元数据文件和编译错误......我只是将我的文件夹重命名为更短的路径,瞧,那些未被识别并保持黑色的类变成了蓝色只需重命名文件夹即可。
【讨论】:
【参考方案5】:对我来说,我在另一个项目中引用了一个项目。它没有显示它在解决方案资源管理器窗口的参考列表中被破坏,但我还是删除并阅读了它。它现在构建得很好!
【讨论】:
确实如此,我删除了所有引用并重新添加了它们。【参考方案6】:我在 VS2012 中完成了所有这些步骤,但在构建整个解决方案时一直遇到这个问题(单个项目构建得很好,没有错误)。
我发现,如果您在解决方案资源管理器中右键单击您的解决方案并选择“构建顺序”,您可以看到 VS 用于重建您的解决方案的顺序。很可能不正常。
您可以通过单击“依赖项”选项卡并选择依赖于解决方案中其他项目的项目并检查它们所依赖的项目来更正构建顺序。一旦你点击 OK 并重新构建解决方案,你就可以开始了。
【讨论】:
【参考方案7】:我过去在 VS2005 和现在在 VS2008 中解决这个问题的方法是确保所有依赖项都是正确的,并且引用指向的是项目而不是 dll。然后按照依赖顺序手动构建每个项目。一旦最后一个构建完成,您就可以运行完整的解决方案构建并且它很好。
这个答案供其他人将来参考,因为我知道这个问题已经超过 15 个月了。
干杯
【讨论】:
【参考方案8】:我有几点想说。
如果您依赖解决方案文件作为 MSBuild 下的构建文件,请确保按照您希望它们构建的顺序(即基于项目的相互依赖顺序)将项目添加到解决方案文件。如果您在解决方案中有其他项目所依赖的项目,但引用已添加为“引用”而不是“项目引用”,这将变得非常重要。
您应该像瘟疫一样避免这种情况,但如果您确实需要这样做,那么至少要确保相关项目出现在解决方案文件中的较早位置。
您应该记住,Visual Studio 生成构建顺序的方式与 MSBuild 生成顺序的方式并不完全相同。这是因为 MSBuild 主要依靠项目文件来告诉它依赖项是什么,而 Visual Studio 也可以将它们保存在解决方案文件中。因此,您有时会看到 Visual Studio 完美构建解决方案而 MSBuild 无法做到的情况。
我有几个例子,我不得不手动调整项目出现在解决方案文件中的顺序,以及项目在解决方案中网站项目的 ProjectReferences 元素中列出的顺序文件。
希望以上信息对您有所帮助。
【讨论】:
【参考方案9】:例如,如果您使用 LinqtoSQL 数据上下文,并且缺少 .designer.cs 文件,您将收到无法找到元数据文件的错误。
重新创建 Designer.cs 文件很容易。
使用 xml 视图打开 dbml。添加一个空行,然后将其删除,然后保存。这应该会重新生成您的 Designer.cs 文件。
在某些情况下,如果您的数据上下文的代码隐藏中有代码,则此解决方法将不起作用。这种情况下,把代码从后面的代码里拿出来,放到记事本什么的。执行添加然后从 DC 中删除一行并保存的技巧。现在把代码放回去保存。
【讨论】:
【参考方案10】:每次我从 SVN 更新项目时都会遇到类似的问题。 ASP.NET 的另一种解决方案:
-
关闭 IDE。
删除
C:\WINDOWS\microsoft.net\framework\v…\Temporary ASP.NET File\
中的文件。
【讨论】:
【参考方案11】:我也遇到了这个错误,原因是项目引用了它自己。我不知道它是怎么发生的,但我只是删除了引用,瞧
【讨论】:
【参考方案12】:首先确保在 Build -> Configuration Manager 中为每个项目标记了“build”复选框。
如果您已经在 Build -> Configuration Manager 菜单下选择了所有项目, 并且重新启动VS技巧对您也不起作用,因为您必须在项目中找到文件(可能是dll或cs)的引用并手动删除这些引用。这些文件/参考应以黄色图标显示。该错误肯定会指导您应该研究哪个解决方案项目。
这个错误的原因是你在windows资源管理器中手动删除了文件,VS没有更新引用并试图找到不再存在的文件!
【讨论】:
【参考方案13】:就我而言,我发现我的解决方案之一是引用计算机上不存在的东西 (VBIDE)。一旦我删除了有问题的引用,其余的项目就会正确构建。希望对某人有所帮助。
在另一种情况下,我将一些代码从一个项目移动到另一个项目,而那段代码引用了 Json.net。我手动添加了对 Json.net 的引用,但这使得问题出现了。我通过 NuGet 安装 Json.net 解决了这个问题,这让问题消失了。希望对某人有所帮助。
【讨论】:
【参考方案14】:同样的事情发生了。我有几个引用相同库项目(.net 3.5)的解决方案。我注意到当一个是在调试/正常配置中构建的,另一个是使用其他编译器指令(sqlite/local 模式)时,会发生这种情况。只需使用相同的指令构建两个项目,就可以了。
【讨论】:
【参考方案15】:如果您向解决方案添加了一个新项目,请检查它是否在构建列表中(请参阅 配置管理器)
【讨论】:
【参考方案16】:当我想包含一个由 Matlab 生成的 dll 文件时,我遇到了保存问题。最后我通过复制一个 .ctf 文件(我想这意味着证书)和一个 .netmodule(正确操作 .dll 所需的)以及 .dll 文件来解决它。这确实奏效了! 所以,我的建议是检查 .dll 是否需要任何其他文件来处理。
【讨论】:
【参考方案17】:Windows 7 旗舰版 32 视觉工作室 2008 SQL Server v2005
我收到了同样的错误。我决定删除并重新添加项目引用。我无法将它们添加回来,因为每个引用项目中的数据库引用都是空白的。
一旦我将数据库引用重置为正确的设置,我就能够构建而不会出现进一步的问题。此外,这是我在 VSS 中分支源代码后第一次尝试重建这个项目。
祝你好运
【讨论】:
【参考方案18】:我遇到了这个错误,它是由我的项目依赖项之一引起的,其中项目中的程序集名称已更改,但引用未更新。因此更新引用或重命名程序集将修复它。
【讨论】:
【参考方案19】:EE - 在我的情况下,问题出在具有实体框架的项目中,打开图表将任何表拖动 2 厘米 :) 并保存,VS 将更新他到数据库的所有链接......构建这个项目并构建解决方案,构建ssss。
【讨论】:
【参考方案20】:修复我的唯一问题(因为我没有在管理员帐户上运行 VS2010)是手动将环境变量 VS120COMNTOOLS 从系统变量移动到用户变量。
【讨论】:
【参考方案21】:从您的 .csproj 文件中删除不再存在于源代码控制和文件系统中的所有源文件的条目对我有用。
详细方法:
嗯,我下面的回答不仅仅是对所有解决方案的总结,而且提供的还不止这些。
第 (1) 节:
一般解决方案:
我有 4 个此类错误(“找不到元数据文件”)以及 1 个错误说“无法打开源文件('未指定错误')”。
我试图摆脱“找不到元数据文件”错误。为此,我阅读了很多帖子、博客等,发现这些解决方案可能是有效的(在这里总结一下):
重启 VS 并再次尝试构建。
转到“解决方案资源管理器”。右键单击解决方案。转到属性。转到“配置管理器”。检查 'Build' 下的复选框是否被选中。如果其中任何一个或全部未选中,则检查它们并再次尝试构建。
如果上述解决方案不起作用,则按照上面步骤 2 中提到的顺序,即使所有复选框都被选中,也不要选中它们,再次选中并尝试重新构建。
构建顺序和项目依赖关系:
转到“解决方案资源管理器”。右键单击解决方案。转到'项目依赖项...'。您将看到 2 个选项卡:'Dependencies' 和 'Build Order'。此构建顺序是构建解决方案的顺序。检查项目依赖关系和构建顺序,以验证是否某个依赖于其他项目(如“project2”)的项目(如“project1”)正在尝试在该项目(project2)之前构建。这可能是错误的原因。
检查丢失的 .dll 的路径:
检查丢失的 .dll 的路径。如果路径包含空格或任何其他无效路径字符,请将其删除并重新构建。
如果是这个原因,则调整构建顺序。
第 (2) 节:
我的特殊情况:
我用各种排列和组合尝试了上述所有步骤,并重新启动了几次 VS。但是,它对我没有帮助。
所以,我决定摆脱我遇到的其他错误('源文件无法打开('未指定的错误')')。
我偶然发现了一个博客: http://www.anujvarma.com/tfs-errorsource-file-could-not-be-opened-unspecified-error/#comment-1539
我尝试了该博客中提到的步骤,我摆脱了错误'无法打开源文件('未指定错误')',令人惊讶的是我摆脱了其他错误 (“找不到元数据文件”)。
第 (3) 节:
故事的寓意:
尝试上面第 (1) 节中提到的所有解决方案(以及任何其他解决方案)以消除错误。如果没有任何结果,根据上面第 (2) 节中提到的博客,从您的 .csproj 文件中删除所有不再存在于源代码控制和文件系统中的源文件的条目 em>。
【讨论】:
以上是关于元数据文件...构建项目时找不到错误的主要内容,如果未能解决你的问题,请参考以下文章
Gradle Android 构建项目错误:找不到元数据资源
使用 CakeBuild 构建 Xamarin.Android 项目时找不到 mscorlib