我正在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文件的绝对路径...我读到有一个长度错误。 这可能是问题吗?
这很烦人,不得不评论,构建和取消注释,构建变得非常累人。
#1楼
我也遇到了这个问题。 首先,您必须通过右键单击Build来手动构建DLL项目。 然后它将起作用。
#2楼
根据错误消息,我不认为文件路径被截断了。 它看起来不正确。 如果我正确阅读了该消息,则似乎是在寻找DLL文件。
WORK =-\\\\ Tools \\ VersionManagementSystem \\ BusinessLogicLayer \\ bin \\ Debug \\ BusinessLogicLayer.dll
这不是有效的路径。 是否有可能在构建过程中将宏定义设置为无效值?
#3楼
我只是有同样的问题。 Visual Studio并未构建被引用的项目。
书面说明:
- 右键单击解决方案,然后单击属性。
- 单击左侧的配置。
- 确保选中“工程”下找不到的项目复选框。 如果已选中,请取消选中,单击应用,然后再次选中复选框。
- (可选)必须在解决方案属性的发布和调试模式下都执行此操作。
屏幕截图说明:
- 他们说,一张图片胜过千言万语。 单击GIF进行放大,希望它很容易遵循:
#4楼
对我来说,它试图在用于包含该项目的路径中找到一个DLL,但是我们将其移动到了新目录。 解决方案具有通往项目的正确路径,但是Visual Studio不知何故一直在寻找旧位置。
解决方案:重命名每个问题项目-只需添加一个字符或其他内容-然后将其重命名回其原始名称。
这必须在Visual Studio中重置某些某种类型的全局缓存,因为这样既可以清除此问题,也可以清除一些类似的问题,而诸如Clean之类的事情则不能。
#5楼
回到几年后,这个问题很可能与Windows最大路径限制有关:
#6楼
就我而言,问题是我手动删除了一个未编译文件,该文件被标记为“缺少”。 一旦删除对丢失文件的引用并重新编译-一切都很好。
#7楼
在新版本的Visual Studio中仍然可能发生这种情况(我只是在Visual Studio 2013中发生过这种情况):
要尝试的另一件事是关闭Visual Studio并删除.sln
文件旁边的.suo
文件。 (下次您Save all
(或退出Visual Studio)时,它将重新生成)。
在将新项目添加到另一台计算机上的解决方案中然后再.suo
修订时,我遇到了这个问题,但是.suo
文件在其他情况下也可能会损坏,并导致非常奇怪的Visual Studio行为,因此删除它是一个问题。我一直尝试的事情。
请注意,删除.suo
文件将重置解决方案的启动项目。
有关.suo
文件的更多信息, .suo
点击这里 。
#8楼
好吧,我的答案不仅是所有解决方案的摘要,而且还提供了更多的解决方案。
第(1)节:
一般解决方案:
我遇到了四个此类错误(“找不到元数据文件”)以及一个错误,提示“无法打开源文件(“未指定错误”)”。
我试图摆脱“找不到元数据文件”错误。 为此,我阅读了许多帖子,博客等,发现这些解决方案可能是有效的(在此处进行总结):
重新启动Visual Studio,然后尝试再次构建。
转到“解决方案资源管理器” 。 右键单击解决方案。 转到属性 。 转到“配置管理器” 。 检查是否选中了“构建”下的复选框。 如果未选中任何一个或全部,请检查它们并尝试再次构建。
如果上述解决方案不起作用,请按照上面第2步中提到的顺序进行操作,即使所有复选框都已选中,也请取消选中它们,然后再次检查并尝试再次构建。
建立订单和项目依存关系:
转到“解决方案资源管理器” 。 右键单击解决方案。 转到“项目依赖项...” 。 您将看到两个选项卡: 'Dependencies'和'Build Order' 。 此构建顺序是解决方案的构建顺序。 检查项目依赖性和构建顺序,以验证是否有依赖于其他项目(例如“ project2”)的某个项目(例如“ project1”)在该项目(project2)之前尝试构建。 这可能是导致错误的原因。
检查缺少的.dll的路径:
检查丢失的.dll的路径。 如果路径包含空格或任何其他无效的路径字符,请将其删除并尝试再次构建。
如果这是原因,则调整构建顺序。
第(2)节:
我的特殊情况:
我尝试了上述所有步骤,并进行了各种排列和组合,并重新启动了Visual Studio几次。 但是,它没有帮助我。
因此,我决定摆脱遇到的其他错误(“无法打开源文件((未指定错误”)”))。
我遇到了一篇博客文章: TFS错误-无法打开源文件(“未指定错误”)
我尝试了该博客文章中提到的步骤,并且摆脱了错误“无法打开源文件(未指定错误”),并且令人惊讶地我摆脱了其他错误(“找不到元数据文件”) ,好。
第(3)节:
故事的道德启示:
尝试使用上面第(1)节中提到的所有解决方案(以及任何其他解决方案)以消除错误。 如果没有解决办法,请按照上面第(2)节中提到的博客, 从.csproj文件中删除源控件和文件系统中不再存在的所有源文件的条目 。
#9楼
对我来说,以下步骤有效:
- 查找未构建的项目
- 删除/添加对解决方案中项目的引用。
#10楼
我的问题实例是由一个普通项目引起的,该项目中有重复的类名(使用不同的文件名)。 奇怪的是Visual Studio无法检测到它,而只是炸毁了构建过程。
#11楼
我在具有许多项目的解决方案中的Visual Studio 2012中遇到了此问题。 以与项目构建顺序相同的顺序手动重建解决方案中的每个项目(在解决方案资源管理器中右键单击并重建),为我修复了该问题。
最终我遇到了一个编译错误。 我已修复错误,此后解决方案将正确构建。
#12楼
嗯,以前的答案对我没有任何帮助,所以让我开始思考为什么我要单击并希望作为开发人员的我们何时真正尝试了解这里发生的情况。
对我来说,很明显,这个不正确的元数据文件引用必须保存在某个地方。
对.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文件中找到错误的路径,然后适当地重命名。
拨弄之前,请确保备份旧的.csproj 。
#13楼
如果您使用假程序集,则可能会显示此错误。 消除伪造品可以成功构建项目。
#14楼
我也想尽办法解决这个问题,但是在尝试了前面的答案之后,对我而言唯一有效的方法是打开解决方案中的每个项目(1比1)并分别构建它们。
然后,我关闭了Visual Studio 2013,重新打开了我的解决方案,并且编译良好。
这很奇怪,因为如果我在解决方案资源管理器中单击每个项目并尝试以这种方式构建它们,它们都会失败。 我不得不在他们自己的解决方案中单独打开它们。
#15楼
就我而言,我的安装目录有误。
如果您的解决方案路径类似于“我的项目%2c非常受欢迎的%2c单元测试%2c软件和硬件.zip”,则它无法解析元数据文件,也许我们应该防止使用诸如%2c之类的无效单词。
将路径重命名为普通名称解决了我的问题。
#16楼
我正在运行Visual Studio 2013。
似乎构建依赖项不正确。 删除* .suo文件确实解决了我遇到的问题。
#17楼
关闭并重新打开Visual Studio 2013对我有用!
#18楼
如果您的解决方案名称中有空格,这也会引起问题。 从解决方案名称中删除空格,以便路径不包含%20即可解决此问题。
#19楼
只是指出最明显的一点:如果您没有启用“构建开始时显示输出窗口”,请确保您注意到构建失败(左下角的“构建失败”小错误)!!!!
#20楼
尝试发布Web应用程序时出现此错误。 原来,其中一个类属性被包装到
#if DEBUG
public int SomeProperty { get; set; }
#endif
但财产用途不是。 显然,发布是在Release配置中完成的,没有DEBUG
符号。
#21楼
就我而言,问题是由一个简单的构建错误引起的,
错误CS0067:从不使用事件“ XYZ”
无论出于何种原因,都没有显示在错误窗口中。
因此,Visual Studio生成系统似乎错过了该错误,并尝试构建依赖项目,而该项目因令人讨厌的元数据消息而失败。
该建议听起来很愚蠢:
首先看看您的输出窗口 !
这个想法花了我半个小时。
#22楼
就我而言,是我注释掉了特定(空)命名空间中的类:
namespace X.Y.Z.W
{
// Class code
}
当我删除名称空间代码及其导入(使用)命令时,它解决了该问题。
在构建中,它还说了-以及项目丢失的DLL文件:
错误CS0234:类型或名称空间名称“ W”在名称空间“ XYZ”中不存在(您是否缺少程序集引用?)
#23楼
我在解决方案中添加了一个新项目,并开始获取它。
原因? 我引入的项目针对的是另一个.NET框架(4.6,而我的另外两个是4.5.2)。
#24楼
建议的答案对我不起作用。 该错误是另一个问题的诱饵。
我发现我瞄准的是.NET稍有不同的版本,编译器将此标记为警告,但它导致构建失败。 应该将其标记为错误而不是警告。
#25楼
我遇到了同样的错误“找不到元数据文件'.dll'”,并且尝试了上述一些操作,但该错误的原因是我引用的是针对更高版本.NET版本的第三方DLL文件。我的项目目标是.NET版本。 因此解决方案是更改项目的目标框架。
#26楼
就我而言,这是由.NET Framework版本不匹配引起的。
一个项目是3.5,另一个引用项目4.6.1。
#27楼
我也有同样的错误。 它隐藏在下面的路径中。 我为DLL文件引用的路径类似于“ D:\\ Assemblies Folder \\ Assembly1.dll”。
但是程序集引用的原始路径是“ D:\\ Assemblies%20Folder \\ Assembly1.dll”。
由于此路径名的变化,无法从其原始路径检索该程序集,并因此引发“找不到元数据”错误。
解决方案在“堆栈溢出”问题中。 如何在C#中用%20替换所有空格? 。
#28楼
看起来这种错误与Visual Studio没有提供有关错误的正确信息这一事实有关。 开发人员甚至都不了解构建失败的原因。 可能是语法错误或其他错误。 通常,要解决此类问题,您应该找到问题的根源(例如,查看构建日志)。
就我而言,问题实际上是“ Error List
窗口未显示任何错误。 但是确实有语法错误。 我在“ Output
窗口中发现了这些错误,并在修复它们后,问题得以解决。
#29楼
对我来说,它发生在我将一个新项目包含到解决方案中时。
Visual Studio自动选择.NET Framework 4.5。
我像其他库一样更改为.NET 4.5.2版本,并且可以正常工作。
#30楼
我遇到了同样的问题。 以我为例,我引用的.Net版本比我的项目更高的类库项目,而VS无法构建该项目,并引发了与您发布的错误相同的错误。
我只需将类库项目的.Net版本 (破坏构建的项目)设置为与引用项目的.Net版本相同,即可解决问题。