我正在开发 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"
<vms:SignOffProjectListing Margin="5"/>
它发生在每次失败的构建之后。我可以获得编译解决方案的唯一方法是注释掉我所有的用户控件并重新构建项目,然后我取消注释用户控件,一切都很好。
我检查了构建顺序和依赖项配置。
如您所见,它似乎截断了 DLL 文件的绝对路径……我已经读到长度存在错误。这是一个可能的问题吗?
这很烦人,必须评论、构建和取消评论,构建变得非常烦人。
我只是有同样的问题。 Visual Studio 没有构建被引用的项目。
书面说明:
右键单击解决方案,然后单击属性。点击左侧的配置。确保选中“构建”下找不到的项目的复选框。如果已选中,请取消选中,点击应用并再次选中复选框。 (可选)您必须在解决方案属性上对发布和调试模式执行此操作。
屏幕截图说明:
他们说,一张图片胜过千言万语。点击 GIF 放大,希望它很容易理解:
https://i.stack.imgur.com/F3Cs3.gif
这仍然可以在较新版本的 Visual Studio 中发生(我刚刚在 Visual Studio 2013 上发生过):
要尝试的另一件事是关闭 Visual Studio 并删除 .sln
文件旁边的 .suo
文件。 (下次您 Save all
(或退出 Visual Studio)时将重新生成它)。
在将新项目添加到另一台计算机上的解决方案然后将修订拉入时,我遇到了这个问题,但是 .suo
文件在其他情况下也可能损坏并导致非常奇怪的 Visual Studio 行为,因此删除它是我总是尝试的事情之一。
请注意,删除 .suo
文件将重置解决方案的启动项目。
.suo
文件的更多信息是 here。
.suo
文件是隐藏的。所以你必须设置你的资源管理器来显示隐藏文件。
.suo
文件是隐藏的,并且位于 .sln
旁边的隐藏 .vs
目录中。例如:如果解决方案文件是 c:\foo\mysolution.sln
,则查找 c:\foo\mysolution\.vs\mysolution\v14\.suo
.vs
隐藏文件夹,而这也删除了 .suo
文件。我重新打开了解决方案,又修复了一个不相关的错误,问题就解决了。
建议的答案对我不起作用。这个错误是另一个问题的诱饵。
我发现我的目标是一个稍微不同的 .NET 版本,编译器将其标记为警告,但它导致构建失败。这应该被标记为错误而不是警告。
好吧,我的回答不仅仅是对所有解决方案的总结,而且提供的还不止这些。
第 (1) 节:
一般解决方案:
我有四个此类错误(“找不到元数据文件”)以及一个错误说“无法打开源文件('未指定错误')”。
我试图摆脱“找不到元数据文件”错误。为此,我阅读了许多帖子、博客等,并发现这些解决方案可能是有效的(在这里总结它们):
重新启动 Visual Studio 并再次尝试构建。转到“解决方案资源管理器”。右键单击解决方案。转到属性。转到“配置管理器”。检查是否选中了“构建”下的复选框。如果其中任何一个或全部未选中,则检查它们并再次尝试构建。如果上述解决方案不起作用,则按照上面步骤 2 中提到的顺序,即使所有复选框都已选中,也不要选中它们,再次选中并尝试再次构建。构建顺序和项目依赖关系:转到“解决方案资源管理器”。右键单击解决方案。转到“项目依赖项...”。您将看到两个选项卡:“依赖项”和“构建顺序”。此构建顺序是构建解决方案的顺序。检查项目依赖关系和构建顺序,以验证是否某个依赖于其他项目(如“project2”)的项目(如“project1”)正在尝试在该项目(project2)之前构建。这可能是错误的原因。检查丢失的 .dll 的路径:检查丢失的 .dll 的路径。如果路径包含空格或任何其他无效路径字符,请将其删除并再次尝试构建。如果这是原因,则调整构建顺序。
第 (2) 节:
我的特殊情况:
我用各种排列和组合尝试了上述所有步骤,并重新启动了几次 Visual Studio。但是,它对我没有帮助。
所以,我决定摆脱我遇到的其他错误('源文件无法打开('未指定的错误')')。
我看到一篇博文:TFS Error–Source File Could Not Be Opened (‘Unspecified error ‘)
我尝试了该博客文章中提到的步骤,并摆脱了错误“无法打开源文件('未指定错误')”,令人惊讶的是,我摆脱了其他错误(“找不到元数据文件”)为出色地。
第 (3) 节:
故事的道德启示:
尝试上面第 (1) 节中提到的所有解决方案(以及任何其他解决方案)以消除错误。如果没有任何结果,根据上面第 (2) 节中提到的博客,从您的 .csproj 文件中删除源代码控制和文件系统中不再存在的所有源文件的条目。
.NET v4.5
项目降级为 .NET v.4
时遇到了这个问题。
就我而言,这是由 .NET Framework 版本不匹配引起的。
一个项目是 3.5,另一个引用项目是 4.6.1。
关闭和重新打开 Visual Studio 2013 对我有用!
好吧,以前的答案中没有任何东西对我有用,所以它让我思考为什么我点击并希望作为开发人员我们应该真正尝试了解这里发生了什么。
在我看来,这个不正确的元数据文件引用必须保存在某个地方,这似乎很明显。
对 .csproj 文件的快速搜索显示了有罪的行。我有一个名为
<ItemGroup>
<ProjectReference Include="..\..\..\MySiteOld\MySite.Entities\MySite.Entities.csproj">
<Project>{5b0a347e-cd9a-4746-a3b6-99d6d010a6c2}</Project>
<Name>Beeyp.Entities</Name>
</ProjectReference>
...
所以一个简单的修复真的:
备份您的 .csproj 文件。在 .csproj 文件中找到不正确的路径并适当地重命名。
请确保在您摆弄之前备份您的旧 .csproj。
Visual Studio 2019 这对我有用:
关闭 Visual Studio 删除隐藏的 .vs 文件夹 重新打开 Visual Studio 并重建解决方案。
我也遇到了这个问题。首先,您必须通过右键单击 Build 手动构建您的 DLL 项目。然后它将起作用。
Metadata file ...proj1.dll could not be found
!
就我而言,我以错误的方式安装了我的目录。
如果您的解决方案路径类似于“我的项目%2c 非常受欢迎%2c 单元测试%2c 软件和硬件.zip”,它无法解析元数据文件,也许我们应该防止一些无效的词,如 %2c。
将路径重命名为正常名称解决了我的问题。
我得到了同样的错误“找不到元数据文件'.dll'”,我尝试了上面描述的几件事,但错误的原因是我引用了第三方 DLL 文件,该文件的目标是更高的 .NET 版本我的项目的目标是 .NET 版本。所以解决方案是改变我项目的目标框架。
我在我的解决方案中添加了一个新项目并开始获取它。
原因?我带来的项目针对的是不同的 .NET 框架(4.6,我的另外两个是 4.5.2)。
对我来说,它试图在曾经包含项目的路径中找到一个 DLL,但我们已将其移至新目录。解决方案具有项目的正确路径,但 Visual Studio 不知何故一直在旧位置查找。
解决方案:重命名每个问题项目 - 只需添加一个字符或其他内容 - 然后将其重命名回其原始名称。
这必须在 Visual Studio 中重置某种类型的全局缓存,因为这可以清除这个问题和一些类似的问题,而像 Clean 这样的东西却没有。
就我而言,问题是由一个简单的构建错误引起的,
错误 CS0067:从未使用过事件“XYZ”
无论出于何种原因,它都没有出现在错误窗口中。
正因为如此,Visual Studio 构建系统似乎错过了错误并尝试构建依赖项目,这反过来又因恼人的元数据消息而失败。
该建议是-听起来很愚蠢-:
首先看看你的输出窗口!
我花了半个小时才想到这个想法......
看起来此类错误与 Visual Studio 未提供有关错误的正确信息有关。开发人员甚至不明白构建失败的原因。它可能是语法错误或其他原因。通常,要解决此类问题,您应该找到问题的根源(例如,查看构建日志)。
就我而言,问题实际上是 Error List
窗口没有显示任何错误。但确实存在语法错误;我在Output
窗口中发现了这些错误,修复后问题就解决了。
对我来说,当我在解决方案中包含一个新项目时,它就发生了。
Visual Studio 自动选择 .NET 框架 4.5。
我像其他库一样更改为 .NET 4.5.2 版本,并且它工作正常。
对我来说,以下步骤有效:
查找未构建的项目
删除/添加对解决方案中项目的引用。
我也因这个问题而烦恼,但是在尝试了以前的答案之后,唯一对我有用的是在我的解决方案中逐个打开每个项目并单独构建它们。
然后我关闭了 Visual Studio 2013,重新打开了我的解决方案,它编译得很好。
这很奇怪,因为如果我单击解决方案资源管理器中的每个项目并尝试以这种方式构建它们,它们都失败了。我不得不在他们自己的解决方案中单独打开它们。
就我而言,问题是我手动删除了一个标记为“丢失”的非编译文件。一旦我删除了对现在丢失的文件的引用并重新编译 - 一切都很好。
如果您的解决方案名称中有空格,这也会导致问题。从解决方案名称中删除空格,因此路径不包含 %20 将解决此问题。
几年后回到这个问题,这个问题很可能与 Windows 最大路径限制有关:
Naming Files, Paths, and Namespaces、Maximum Path Length Limitation
我的问题实例是由一个常见的项目引起的,该项目中有一个重复的类名(在不同的文件名下)。奇怪的是,Visual Studio 无法检测到这一点,而只是破坏了构建过程。
我在具有许多项目的解决方案中的 Visual Studio 2012 中遇到了这个问题。以与项目构建顺序相同的顺序手动重建解决方案中的每个项目(右键单击并在解决方案资源管理器中重建)为我修复了它。
最终我得到了一个给我一个编译错误的东西。我修复了错误,之后解决方案将正确构建。
我也有同样的错误。它隐藏在下面的路径中。我为 DLL 文件引用的路径类似于“D:\Assemblies Folder\Assembly1.dll”。
但是程序集引用的原始路径是“D:\Assemblies%20Folder\Assembly1.dll”。
由于此路径名称变化,无法从其原始路径检索程序集,因此引发“未找到元数据”错误。
解决方案在 Stack Overflow 问题 How do I replace all the spaces with %20 in C#? 中。
这里解释的大多数方法都没有为我解决问题。
最后,我通过应用以下步骤解决了这个问题:
1. 关闭 Visual Studio。
2.删除每个项目的bin文件夹中的所有内容。
3. 打开解决方案并重建。
我也遇到过同样的问题。在我的情况下,我引用了一个 .Net 版本比我的项目更高的类库项目,而 VS 未能构建该项目并引发了您发布的相同错误。
我只是将我的类库项目的 .Net 版本(破坏了构建的那个)设置为与引用项目的 .Net 版本相同,问题就解决了。
只是指出明显的:如果您没有启用“构建开始时显示输出窗口”,请确保您注意到您的构建是否失败(左下方的小“构建失败”错误)!!!!
我在尝试发布 Web 应用程序时遇到此错误。原来,一个类属性被包装成
#if DEBUG
public int SomeProperty { get; set; }
#endif
但财产用途不是。显然,发布是在没有 DEBUG
符号的发布配置中完成的。
根据错误消息,我不相信文件路径被截断。它看起来是不正确的。如果我正确阅读了该消息,它似乎正在寻找 DLL 文件...
WORK=-\Tools\VersionManagementSystem\BusinessLogicLayer\bin\Debug\BusinessLogicLayer.dll
这不是一个有效的路径。是否有可能在构建过程中将宏定义设置为无效值?
我遇到此问题是因为 .nuget\NuGet.exe
未包含在我的存储库中。虽然我在 NuGet.targets 中启用了 DownloadNuGetExe
,但它在尝试下载它时报告了代理错误。这导致项目的其余部分构建失败。
不定期副业成功案例分享
release/bin
文件夹中收到错误。那并没有解决它。我对调试配置做了同样的事情,然后release/bin
错误消失了。微软 0/10