问答中心分类: WPF找不到元数据文件“.dll”
0
匿名用户 提问 1月 前

我正在开发 WPF、C# 3.0 项目,但出现此错误:

Error 1 Metadata file
'WORK=- \Tools\VersionManagementSystem\BusinessLogicLayer\bin\Debug
\BusinessLogicLayer.dll' could not be found C:\-=WORK=- \Tools
\VersionManagementSystem\VersionManagementSystem\CSC VersionManagementSystem

这就是我引用用户控件的方式:

xmlns:vms="clr-namespace:VersionManagementSystem"

它发生在每次失败的构建之后。我可以获得编译解决方案的唯一方法是注释掉我所有的用户控件并重新构建项目,然后我取消注释用户控件,一切都很好。
我检查了构建顺序和依赖项配置。
如您所见,它似乎截断了 DLL 文件的绝对路径……我已经读到长度存在错误。这是一个可能的问题吗?
这很烦人,必须评论、构建和取消评论,构建变得非常烦人。

phoad 回复 1月 前

我有一个类似的问题(得到标题中指示的相同错误)并通过清理和重建项目来处理它。要正确引用其他项目,我不知道..

phoad 回复 1月 前

我已经标记了马特的答案,因为它似乎对大多数人都有效,但这并没有解决我原来的问题。我仍然认为它与 Windows 最大路径限制有关。请看下面我的回答。

phoad 回复 1月 前

我尝试了上面的所有答案,不幸的是在我的情况下没有任何效果。我遇到了 2 个错误 1. 缺少 .dll 文件 2. 方法已经在另一个地方用相同的参数定义了我首先通过删除在另一个地方重复的函数来清除第二个错误。我的第一个错误 – 即 .dll 文件丢失已自行解决。我想说如果您有多个错误以及 .dll 丢失文件错误!请先尝试解决其他错误。可能是.dll错误自行解决!

phoad 回复 1月 前

当您引用基于比当前项目更高版本的 .Net 框架构建的项目 dll 时,我们还会遇到元数据文件“.dll”未找到问题。

phoad 回复 1月 前

类似问题的解决方案stackoverflow.com/questions/20490857/…为我工作。

phoad 回复 1月 前

这件事在 2018 年仍然发生的事实让我很痛苦。我什至不确定我是如何解决它的。它就像一个VS的东西或什么的。

phoad 回复 1月 前

其他尝试,我修复了解决方案中的所有其他错误,这个问题就消失了。

phoad 回复 1月 前

这在 VS2019 .Net Core、ASP.Net Core 解决方案中对我有用。在解决方案的同一位置打开 PowerShell 控制台。类型点网还原接着点网构建,将构建解决方案,现在它也可以从 Visual Studio IDE 构建。给出的其他解决方案都不适合我。

phoad 回复 1月 前

就我而言,没有一个答案有帮助。所以我通过以下方式错误地审查了错误。示例:找不到 ProjectA.dll。在同一行中列出了它引用的其他项目。说 RefProject.csproj。在解决方案资源管理器中,转到“依赖项”并在那里删除 ProjectA 引用。对所有错误都这样做。然后,执行 clean+rebuild 得到更多错误。其中大部分是由于缺少参考。使用 Intellisense 重新添加它们,并按错误处理错误。最后,解决方案将再次编译。这可能是由损坏的 csproj 文件元数据引起的。

phoad 回复 1月 前

我的一个项目被卸载了。右键单击以在解决方案资源管理器中重新加载有效。

29 Answers
0
corvuscorax 回答 1月 前

这仍然可以在较新版本的 Visual Studio 中发生(我刚刚在 Visual Studio 2013 上发生过):
要尝试的另一件事是关闭 Visual Studio 并删除.suo旁边的文件.sln文件。 (下次你会重新生成Save all(或退出 Visual Studio))。
在将新项目添加到另一台机器上的解决方案然后拉入修订版时,我遇到了这个问题,但是.suo文件在其他情况下也可能损坏并导致非常奇怪的 Visual Studio 行为,因此删除它是我一直尝试的事情之一。
请注意,删除.suo文件将重置解决方案的启动项目。
更多关于.suo文件是这里.

George Howarth 回复 1月 前

这解决了我的问题。另外值得一提的是.suo文件被隐藏。所以你必须设置你的资源管理器来显示隐藏文件。

user3596965 回复 1月 前

我正在使用 Xamarin 项目,并且 .suo 文件位于 .vs/ 文件夹中。我尝试删除它并没有解决我的问题

Vin 回复 1月 前

VS2013 – 我不得不将我的 TFS 工作区移动到不同的位置。完成此操作后,我开始收到此错误。删除 sou 文件对我有用。

Wyck 回复 1月 前

这对我也有用。但在 Visual Studio 2015 中,.suo文件既隐藏又位于隐藏的.vs旁边的目录.sln.例如:如果解决方案文件是c:\foo\mysolution.sln然后寻找c:\foo\mysolution\.vs\mysolution\v14\.suo

Dmytro Laptin 回复 1月 前

我在 VS 2015 更新 3 上发生了这种情况,Matt 的解决方案对我有用。

Ben 回复 1月 前

我正在使用 VS2017RC 并删除隐藏的顶级 .vs 文件夹中的 .suo 文件对我有用!

Jorge Urreta 回复 1月 前

非常感谢。这在 VS 2013 上为我解决了这个问题,经过近一个小时的努力

ethane 回复 1月 前

在 VS2017 中.suo与@Wyck 的评论具有相同的路径。不过,您的文件夹可能位于 v15 文件夹中,而不是 v14。

Lanklaas 回复 1月 前

关闭和打开视觉工作室帮助了我。谢谢

user3613932 回复 1月 前

对于 VS2017,为简单起见,我只是删除了.vs隐藏文件夹,而不是它也删除了.suo文件。我重新打开了解决方案,又修复了一个不相关的错误,问题就解决了。

J.D. 回复 1月 前

截至今天仍在 VS 2019 中发生。标记的答案实际上对我有用。我只需要确保我遍历了每一种配置类型(发布、调试等),并取消选中、应用、重新检查、应用所有这些类型。

computercarguy 回复 1月 前

这对我来说适用于 VS 2019 Community Ed。

Imran Khan 回复 1月 前

为我工作。我正在使用 VS 2019

0
jordan koskei 回答 1月 前

建议的答案对我不起作用。这个错误是另一个问题的诱饵。
我发现我的目标是一个稍微不同的 .NET 版本,编译器将其标记为警告,但它导致构建失败。这应该被标记为错误而不是警告。

StronglyTyped 回复 1月 前

通过右键单击项目>属性>应用程序>目标框架,我能够通过将项目的框架与警告消息中指示的更高版本进行匹配来修复。

Douglas Gaskell 回复 1月 前

哇,这为我解决了。新项目的目标是不同的 .net 版本。不敢相信即使在 vs2017 中也没有对此进行检查。

Casey Crookston 回复 1月 前

值得注意的是,问题可能比导致问题的项目更深。即使该项目针对的是正确的框架,如果该项目依赖于另一个项目并且依赖的项目针对的是不同的框架,那么它也可能导致此问题。

alelom 回复 1月 前

我认为指出您可以通过查看输出窗口来发现“诱饵”错误是有用的。就我而言,禁用突出显示项目的构建后如@Matt_Bro 接受的答案中所述,我再次运行构建并在输出窗口中发现了真正的问题,因为构建失败了即使错误列表中没有显示错误.

alelom 回复 1月 前

在我的情况下,这又与项目的目标 .NET 框架比引用的程序集更早有关。根据我之前的评论,我只能在输出窗口中看到正确的错误。

0
Vikram 回答 1月 前

好吧,我的回答不仅仅是对所有解决方案的总结,而且提供的还不止这些。
第 (1) 节:
一般解决方案:
我有四个此类错误(“找不到元数据文件”)以及一个错误说“无法打开源文件('未指定错误')”。
我试图摆脱“找不到元数据文件”错误。为此,我阅读了许多帖子、博客等,并发现这些解决方案可能是有效的(在这里总结它们):

  1. 重新启动 Visual Studio 并再次尝试构建。
  2. '解决方案资源管理器'.右键单击解决方案。去特性.去'配置管理器'.检查下的复选框是否'建造'是否检查。如果其中任何一个或全部未选中,则检查它们并再次尝试构建。
  3. 如果上述解决方案不起作用,则按照上面步骤 2 中提到的顺序,即使所有复选框都已选中,也不要选中它们,再次选中并尝试再次构建。
  4. 构建顺序和项目依赖关系:
    '解决方案资源管理器'.右键单击解决方案。去'项目依赖…'.您将看到两个选项卡:'依赖项''建立秩序'.此构建顺序是构建解决方案的顺序。检查项目依赖项和构建顺序以验证是否某个依赖于其他项目(例如“project2”)的项目(例如“project1”)正在尝试在该项目(project2)之前构建。这可能是错误的原因。
  5. 检查丢失的 .dll 的路径:
    检查丢失的 .dll 的路径。如果路径包含空格或任何其他无效路径字符,请将其删除并再次尝试构建。
    如果这是原因,则调整构建顺序。

第 (2) 节:
我的特殊情况:
我用各种排列和组合尝试了上述所有步骤,并重新启动了几次 Visual Studio。但是,它对我没有帮助。
所以,我决定摆脱我遇到的其他错误('源文件无法打开('未指定的错误')')。
我偶然发现了一篇博文:TFS 错误 – 无法打开源文件(“未指定错误”)
我尝试了该博客文章中提到的步骤,并摆脱了错误'源文件无法打开('未指定的错误')'令人惊讶的是我摆脱了其他错误('找不到元数据文件')也是。

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

Nacht 回复 1月 前

我的问题是构建顺序/项目依赖关系。从其他项目中删除和添加反向引用将纠正这一点(我认为),但你也可以自己做。

guneysus 回复 1月 前

我通过降级遇到了这个问题.NET v4.5项目.NET v.4.

George Polevoy 回复 1月 前

它不是标题中声称的所有其他答案的摘要。您的特定案例的解决方案不能解决原始问题

Vikram 回复 1月 前

@GeorgePolevoy,请正确阅读我的答案的第一行。 “嗯,我的答案不仅仅是对所有解决方案的总结,而且提供的还不止这些。”我本人明确表示,这不仅仅是其他答案的总结。我给出了一些可能有效的常见策略(总结)(第 1 节)。但是,在那之后,我解释了一个案例,其中这些都不起作用,我不得不通过其他方式解决问题(第 2 节)。因此,人们可以先尝试第 1 部分,如果他们有与我类似的情况,他们可以尝试第 2 部分。

Vikram 回复 1月 前

@GeorgePolevoy,已经有 56 位用户投了赞成票。您的反对票将其降至 55。如果它没有用,为什么会有这么多用户赞成它?在您发表评论之前请仔细阅读并在您投反对票之前思考。

Phil M 回复 1月 前

修复您遇到的任何其他错误;他们可能会默默地停止项目构建,因此不会创建 dll。当我解决了我遇到的另一个错误时,构建完成并且所有错误都消失了。

Brk 回复 1月 前

这可能太明显了,但请确保目标 dll 尚未通过 Visual Studio 的另一个实例或另一个 exe 使用。

Boogier 回复 1月 前

从引用的 dll 路径中删除“%”对我有帮助

guneysus 回复 1月 前

@kkuilla 太久以前了。不幸的是我不记得了。由于我没有对任何答案投赞成票,因此可以创建一个干净的 .NET 4 项目并手动移动源文件。

Martin Johansson 回复 1月 前

第 2 节中的解决方案对我有用!我有另一个错误,当我修复其他错误时,其他人神奇地消失了。

Lenny K 回复 1月 前

我和布吉有同样的问题。我的文件夹名称中有一个 %20 而不是空格,并且 dll 正在寻找一个空格。花了很多时间尝试所有其他修复,而实际的修复是最简单的。

paparush 回复 1月 前

我的解决方案路径在目录路径中有 %20。那是来自 Azure DevOps 的克隆存储库。不确定为什么 Visual Studio 决定在从 Azure DevOps 克隆时创建一个 html 安全字符串从目录路径中删除 %20 为我解决了这个问题。

0
user117499user117499 回答 1月 前

就我而言,这是由 .NET Framework 版本不匹配引起的。
一个项目是 3.5,另一个引用项目是 4.6.1。

AzzamAziz 回复 1月 前

这也发生在 4.5.2 Vs 之间。 4.6

Mason 回复 1月 前

确实,我有一个 4.6.1,其余的是 4.5.2,谢谢!

user117499 回复 1月 前

是的,似乎任何时候框架版本不同,都会发生这种情况。微软大错!

Esaith 回复 1月 前

是的!当我的项目是 .Net 4.6.1 时,我试图使用 .Net 4.7.1 .dll。该警告被其他项目隐藏,但没有错误。我的错误是红鲱鱼

Ivan-San 回复 1月 前

确实!我添加了一个尝试使用 .NET 4.7.1 的项目参考,而我的项目是 .NET 4.6.1。它没有在错误列表窗口中向我显示错误,但在控制台中不断告诉我“类型或命名空间名称 '…' 不存在于命名空间 '…' (您是否缺少程序集引用?)”。我的解决方案是将所有项目移至 .NET 4.8。

0
Roffers 回答 1月 前

关闭和重新打开 Visual Studio 2013 对我有用!