首页 文章

找不到元数据文件'.dll'

提问于
浏览
523

我正在研究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

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

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

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

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

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

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

30 回答

  • 6

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

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

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

  • 4

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

    Naming Files, Paths, and NamespacesMaximum Path Length Limitation

  • 4

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

  • 4

    我正在运行Visual Studio 2013 .

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

  • 4

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

    namespace X.Y.Z.W
    {
    
        // Class code
    
    }
    

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

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

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

  • 12

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

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

  • 7

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

  • 6

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

  • 6

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

  • 7

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

    • 右键单击解决方案,然后单击“属性” .

    • 单击左侧的“配置” .

    • 确保选中了无法找到的项目的"Build"下的复选框 . 如果已经选中,请取消选中,点击“应用”并再次选中复选框 .

  • 4

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

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

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

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

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

  • 4

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

    Section (1):

    In general solutions:

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

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

    • 重新启动Visual Studio并再次尝试构建 .

    • 转到 'Solution Explorer' . 右键单击Solution . 转到 Properties . 转到 'Configuration Manager' . 检查是否选中了 'Build' 下的复选框 . 如果未选中任何一个或全部,请检查它们并再次尝试构建 .

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

    • Build Order and Project Dependencies:

    转到 'Solution Explorer' . 右键单击Solution . 转到 'Project Dependencies...' . 您将看到两个选项卡: 'Dependencies''Build Order' . 此构建顺序是构建解决方案的顺序 . 检查项目依赖项和构建顺序,以验证某个依赖于其他项目(例如'project2')的项目(例如'project2')是否正在尝试在该项目之前构建(project2) . 这可能是导致错误的原因 .

    • Check the path of the missing .dll:

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

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


    Section (2):

    My particular case:

    我尝试了几次以上的所有步骤,并重新启动Visual Studio几次 . 但是,它没有帮助我 .

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

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

    我尝试了那篇博文中提到的步骤,我摆脱了错误 'Source File Could Not Be Opened (‘Unspecified error ‘)' ,令人惊讶的是我也摆脱了其他错误 (‘metadata file could not be found’) .


    Section (3):

    Moral of the story:

    尝试上面第(1)节(以及任何其他解决方案)中提到的所有解决方案,以消除错误 . 如果没有任何结果,按照上面第(2)节中提到的博客, delete the entries of all source files which are no longer present in the source control and the file system from your .csproj file .

  • 10

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

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

  • 4

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

  • 4

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

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

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

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

    真的很简单:

    • 备份.csproj文件 .

    • 在.csproj文件中查找不正确的路径并进行相应的重命名 .

    make sure you backup your old .csproj before you fiddle .

  • 3

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

  • 186

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

  • 110

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

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

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

  • 80

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

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

  • 31

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

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

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

  • 22

    对我来说,当我将一个新项目纳入解决方案时就发生了 .

    Visual Studio自动选择.NET framework 4.5 .

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

  • 16

    对我来说,它试图在用于包含Project的路径中找到DLL,但我们已将其移动到新目录 . 解决方案有正确的项目路径,但Visual Studio不知何故一直在寻找旧位置 .

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

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

  • 13

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

    • 找到未构建的项目

    • 删除/添加对解决方案中项目的引用 .

  • 10

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

  • 8

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

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

  • 8

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

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

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

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

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

    首先看看你的输出窗口!

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

  • 4

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

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

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

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

  • 4

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

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

  • 4

    我'd faced the same problem. In my case I'引用了比我的项目更高 .Net version 的类库项目,并且VS无法构建项目并引发了您发布的相同错误 .

    我只是设置我的类库项目的 .Net version (已经打破了构建的项目)与引用项目的.Net版本相同并解决了问题 .

  • 658

    我遇到过同样的问题 . 在我的情况下,项目仍然会在发布模式下构建,就在我尝试构建调试失败的时候 .

    我最后解决的问题是将所有dll(以及我发布文件夹中的其他文件)复制到我的调试文件夹中 . 在为每个项目执行此操作后,错误消失了 .

相关问题