找不到元数据文件“.dll”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了找不到元数据文件“.dll”相关的知识,希望对你有一定的参考价值。

我正在研究WPF,C#3.0项目,我收到此错误:

Error 1 Metadata file
'WORK=- ToolsVersionManagementSystemBusinessLogicLayerinDebug
BusinessLogicLayer.dll' could not be found C:-=WORK=- Tools
VersionManagementSystemVersionManagementSystemCSC VersionManagementSystem

这是我引用我的usercontrols的方式:

xmlns:vms="clr-namespace:VersionManagementSystem"
<vms:SignOffProjectListing Margin="5"/>

它发生在每次失败的构建之后。我可以获得编译解决方案的唯一方法是注释掉我的所有用户控件并重新构建项目,然后我取消注释用户控件,一切都很好。

我检查了构建顺序和依赖项配置。

正如你所看到的,它似乎已经截断了DLL文件的绝对路径......我已经读过有一个长度错误。这可能是个问题吗?

它非常烦人,不得不评论,构建和取消注释,构建变得非常烦人。

答案

我刚遇到同样的问题。 Visual Studio不构建正在引用的项目。

  1. 右键单击解决方案,然后单击“属性”。
  2. 单击左侧的“配置”。
  3. 确保选中无法找到的项目的“Build”下的复选框。如果已经选中,请取消选中,点击“应用”并再次选中复选框。
  4. (可选)您必须对解决方案属性的Release和Debug模式执行此操作。
另一答案

在我的情况下,我以错误的方式安装了我的目录。

如果您的解决方案路径类似于“我的项目%2c非常受欢迎的%2c单元测试%2c软件和硬件.zip”,它无法解析元数据文件,也许我们应该防止一些无效的单词,如%2c。

将路径重命名为普通名称解决了我的问题。

另一答案

我在我的解决方案中添加了一个新项目并开始实现这一目标

原因?我带来的项目是针对不同的.NET框架(4.6和我的另外两个是4.5.2)。

另一答案

对我来说,它试图在用于包含Project的路径中找到DLL,但我们已将其移动到新目录。解决方案具有项目的正确路径,但Visual Studio以某种方式继续查看旧位置。

解决方案:重命名每个问题项目 - 只需添加一个字符或其他 - 然后将其重命名为其原始名称。

这必须在Visual Studio中重置一些某种全局缓存,因为这会解决这个问题和类似的几个问题,而像Clean这样的东西则不会。

另一答案

对我而言,当我将一个新项目纳入解决方案时就发生了。

Visual Studio自动选择.NET framework 4.5。

我像其他库一样更改为.NET 4.5.2版本,并且它有效。

另一答案

对我来说,以下步骤有效:

  • 找到没有构建的项目
  • 删除/添加对解决方案中项目的引用。
另一答案

我也在解决这个问题,但是在尝试了之前的答案之后,对我来说唯一有用的就是在我的解决方案中逐个打开每个项目并单独构建它们。

然后我关闭了Visual Studio 2013,重新打开了我的解决方案并且编译得很好。

这很奇怪,因为如果我在解决方案资源管理器中单击每个项目并尝试以这种方式构建它们,那么它们都会失败。我必须在自己的解决方案中单独打开它们。

另一答案

我的问题实例是由一个共同的项目引起的,该项目中有一个重复的类名(在不同的文件名下)。奇怪的是,Visual Studio无法检测到这一点,而只是炸毁了构建过程。

另一答案

我在Visual Studio 2012中遇到了这个问题,该解决方案包含许多项目。按照与项目构建顺序相同的顺序手动重建解决方案中的每个项目(在解决方案资源管理器中右键单击并重建)为我修复了它。

最终我遇到了一个给我编译错误的程序。我修复了错误,之后解决方案将正确构建。

另一答案

在我的情况下,问题是我手动删除了一个标记为“缺失”的非编译文件。一旦我删除了对现在丢失的文件的引用并重新编译 - 一切都很顺利。

另一答案

几年后再回到这个问题,这个问题很可能与Windows最大路径限制有关:

Naming Files, Paths, and NamespacesMaximum Path Length Limitation

另一答案

这仍然可以在较新版本的Visual Studio中发生(我只是在Visual Studio 2013上发生过):

另一件事是关闭Visual Studio并删除.suo文件旁边的.sln文件。 (它会在下次你Save all(或退出Visual Studio)时重新生成)。

我在将新项目添加到另一台机器上的解决方案然后拉入修订版时遇到了这个问题,但.suo文件在其他情况下也可能被破坏并导致非常奇怪的Visual Studio行为,因此删除它是其中之一我经常尝试的事情。

请注意,删除.suo文件将重置解决方案的启动项目。

关于.suo文件的更多信息是here

另一答案

就我而言,问题是由简单的构建错误引起的,

错误CS0067:从不使用事件'XYZ'

由于任何原因,没有出现在错误窗口中。

因此,Visual Studio构建系统似乎错过了错误,并试图构建依赖项目,而这些项目又因烦人的元数据消息而失败。

建议是 - 听起来很愚蠢 - :

首先看看你的输出窗口!

在这个想法袭击我之前我花了半个小时...

另一答案

我也有同样的错误。它隐藏在下面的路径中。我提到的DLL文件的路径就像“D: Assemblies Folder Assembly1.dll”。

但是程序集引用的原始路径是“D: Assemblies%20Folder Assembly1.dll”。

由于此路径名称变化,无法从其原始路径检索程序集,因此会抛出“未找到元数据”错误。

解决方案是Stack Overflow问题How do I replace all the spaces with %20 in C#?

另一答案

看起来这种错误与Visual Studio无法提供有关错误的正确信息有关。开发人员甚至不了解构建失败的原因。它可能是语法错误或其他。通常,要解决此类问题,您应该找到问题的根源(例如,查看构建日志)。

在我的情况下问题实际上是Error List窗口没有​​显示任何错误。但确实存在语法错误;我在Output窗口中发现了这些错误,在修复它们之后,问题就解决了。

另一答案

我遇到了同样的问题。在我的情况下,我引用了一个类库项目,其.Net版本高于我的项目,VS无法构建项目并引发了您发布的相同错误。

我只是设置我的类库项目的.Net版本(破坏了构建的那个)与引用项目的.Net版本相同并解决了问题。

另一答案

如果您的解决方案名称中有空格,这也会导致问题。从解决方案名称中删除空格,因此路径不包含%20将解决此问题。

另一答案

只是指出明显的明显:如果你没有启用“在构建开始时显示输出窗口”,请确保你注意到你的构建是否失败(左下方的小“构建失败”错误)!

另一答案

我在尝试发布Web应用程序时遇到此错误。原来,其中一个类属性被包装进去了

#if DEBUG
    public int SomeProperty { get; set; }
#endif

但物业使用不是。显然,发布是在没有DEBUG符号的Release配置中完成的。

另一答案

根据错误消息,我不相信文件路径被截断。它看起来是不正确的。如果我正确读取消息,它似乎正在寻找DLL文件...

WORK = - 工具 VersionManagementSystem BusinessLogicLayer BIN 调试 BusinessLogicLayer.dll

这不是一个有效的路径。您是否可能在构建过程中将宏定义设置为无效值?

另一答案

如果您使用假装配,则可能会显示此错误。删除假货可以成功构建项目。

另一答案

我正在运行Visual Studio 2013。

似乎构建依赖项不正确。删除* .suo文件确实解决了我遇到的问题。

另一答案

建议的答案对我不起作用。该错误是另一个问题的诱饵。

我发现我的目标是稍微不同的.NET版本,这被编译器标记为警告,但它导致构建失败。这应该被标记为错误而不是警告。

另一答案

对于我的情况,我在特定的(空)命名空间中注释了类:

namespace X.Y.Z.W
{

    // Class code

}

当我删除命名空间代码及其导入(使用)命令时 - 它修复了问题。

在构建中它也说 - 以及项目缺少的DLL文件:

错误CS0234:命名空间“X.Y.Z”中不存在类型或命名空间名称“W”(您是否缺少程序集引用?)

另一答案

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

第(1)节:

一般解决方案:

我有四个这种错误('无法找到元数据文件')以及一个错误,说'源文件无法打开('未指定错误')'。

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

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

第(2)节:

我的具体案例:

我尝试了几个上面的所有步骤,并重新安装了Visual Studio几次。但是,它没有帮助我。

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

我发现了一篇博文:TFS Error–Source File Could Not Be Opened (‘Unspecified error ‘)

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


第(3)节:

故事的道德启示:

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

另一答案

在我的情况下,它是由.NET Framework版本不匹配引起的。

一个项目是3.5,另一个项目是4.6.1。

另一答案

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

另一答案

好吧,以前的答案中没有任何内容对我有用,所以它让我思考为什么我点击并希望何时作为开发人员我们应该真正尝试了解这里发生了什么。

我觉得这个不正确的元数据文件引用必须保存在某处。

快速搜索.csproj文件显示了内疚的行。我有一个名为<itemGroup>的部分似乎挂在旧的不正确的文件路径上。

<ItemGroup>
    <ProjectReference Include="......MySiteOldMySite.EntitiesMySite.Entities.csproj">
        <Project>{5b0a347e-cd9a-4746-a3b6-99d6d010a6c2}</Project>
        <Name>Beeyp.Entities</Name>
    </ProjectReference>
...

真的很简单:

  1. 备份.csproj文件。
  2. 在.csproj文件中找到不正确的路径并适当重命名。

请确保在摆弄之前备份旧的.csproj。

另一答案

我也遇到了这个问题。首先,您必须通过右键单击Build来手动构建DLL项目。然后它会工作。

另一答案

我得到了相同的错误“无法找到元数据文件'.dll',我尝试了上面描述的几件事,但错误的原因是我引用的是第三方DLL文件,该文件的目标是.NET版本更高我的项目目标是.NET版本。所以解决方案是改变我的项目的目标框架。

以上是关于找不到元数据文件“.dll”的主要内容,如果未能解决你的问题,请参考以下文章

错误“在 Visual Studio 中找不到元数据文件 '...\Release\project.dll'”

发布时找不到 CSC 错误元数据文件 dll

由于找不到vcruntime140.dll,无法继续执行代码

无法解析程序集或 Windows 元数据文件“System.Configuration.dll”

由于找不到MSVCR120.dll和MSVCP120.dll,无法继续执行代码

的电脑打开总是说找不到一个啥.dll文件,说重装应用程序可能会解决这个问题