我在一个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文件的绝对路径…我读到过关于长度的问题。这是一个可能的问题吗?

注释、构建和取消注释是非常烦人的,构建变得非常烦人。


当前回答

在我的例子中,我以错误的方式获得了安装目录。

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

当从某些站点克隆存储库时,目录名是URL编码的。它将把目录名中的空格字符转换为%20,正斜杠转换为%2f,下划线转换为%5f,等等。虽然,我不确定为什么%符号会破坏事情。

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

其他回答

根据错误消息,我认为文件路径没有被截断。它看起来是不正确的。如果我正确地阅读消息,它似乎正在寻找DLL文件在…

工作= - \ VersionManagementSystem \ BusinessLogicLayer \ bin \ \工具调试\ BusinessLogicLayer.dll

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

我也遇到过同样的问题。首先,我从工具> nuget包管理器>包管理器设置中清除所有nuget缓存,然后单击“清除所有nuget缓存”。打开Powershell,运行“dotnet restore”,然后运行“dotnet build”。就我而言,这个解决方案纠正了我的错误。

好吧,我的答案不只是所有解决方案的总结,但它提供了更多。

节(1):

一般解决方案:

我有四个这样的错误(“元数据文件找不到”),还有一个错误是“源文件无法打开(“未指定的错误”)”。

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

Restart Visual Studio and try building again. Go to 'Solution Explorer'. Right click on Solution. Go to Properties. Go to 'Configuration Manager'. Check if the checkboxes under 'Build' are checked or not. If any or all of them are unchecked, then check them and try building again. If the above solution(s) do not work, then follow sequence mentioned in step 2 above, and even if all the checkboxes are checked, uncheck them, check again and try to build again. Build Order and Project Dependencies: Go to 'Solution Explorer'. Right click on Solution. Go to 'Project Dependencies...'. You will see two tabs: 'Dependencies' and 'Build Order'. This build order is the one in which solution builds. Check the project dependencies and the build order to verify if some project (say 'project1') which is dependent on other (say 'project2') is trying to build before that one (project2). This might be the cause for the error. Check the path of the missing .dll: Check the path of the missing .dll. If the path contains space or any other invalid path character, remove it and try building again. If this is the cause, then adjust the build order.


节(2):

我的具体情况是:

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

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

我看到一篇博客文章:TFS错误-源文件无法打开(“未指明的错误”)

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


节(3):

这个故事的寓意:

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

非常奇怪!我尝试了之前所有的答案,不幸的是,没有一个对我的情况有效。

我遇到了两个错误:

丢失.dll文件 方法已经在另一个地方用相同的参数定义

我已经通过删除在另一个地方重复的函数,首先清除了第二个错误。

我的第一个错误-即.dll文件丢失已经解决了它自己。

我想说的是,如果您有多个错误以及.dll丢失文件错误,请尝试先解决其他错误。也许.dll错误自己解决了这个问题!

我也犯了同样的错误。它隐藏在下面的路径。 DLL文件的路径类似于“D:\Assemblies Folder\Assembly1.dll”。

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

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

解决方案是在堆栈溢出问题我如何替换所有的空格与%20在c# ?