元数据文件'.dll'找不到
我正在一个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"/>
它发生在每个失败的构build之后。 解决scheme编译的唯一方法是注释掉所有的用户控件,然后构build项目,然后取消usercontrols的注释,一切正常。
我已经检查了构build命令,依赖configuration。
正如你可以看到它似乎已经截断了DLL的绝对path…我已经读过,有一个长度的错误。 这是一个可能的问题?
这是非常烦人的,不得不评论,build立,取消注释,build立变得非常烦人。
我只是有同样的问题。 Visual Studio没有构build被引用的项目。
- 右键单击解决scheme,然后单击属性。
- 点击左侧的configuration。
- 确保选中“无法find的项目”下的“Build”下的checkbox。 如果已经选中,取消选中,点击应用,然后再次选中checkbox。
尽pipe这是一个老问题,但在VS的新版本中(我刚刚发生在VS 2013上)仍然会发生这种情况,所以我想在这里添加这个提示:
另一件要尝试的是closuresVS并删除.sln
文件旁边的.suo
文件。 (下次您Save all
(或退出VS)将重新生成)。
当在另一台机器上的解决scheme中添加新项目,然后拉动修改版本时,我遇到了这个问题,但是在其他情况下, .suo
文件也可能会被破坏,导致很奇怪的VS行为,所以删除它是我总是尝试的东西。
请注意,删除.suo
文件将重置解决scheme的启动项目。
更多关于.suo
文件在这里
那么,我的答案不仅仅是所有解决scheme的总结,还有更多。
第(1)节:
一般解决scheme:
我有4种这样的错误('元数据文件无法find')以及1个错误说'源文件无法打开('未指定的错误')'。
我试图摆脱“无法find元数据文件”的错误。 为此,我读了很多post,博客等,发现这些解决scheme可能是有效的(在这里总结):
-
重新启动VS并尝试再次build立。
-
转到“解决scheme资源pipe理器” 。 右键点击解决scheme。 去属性 。 转到“configurationpipe理器” 。 检查“Build”下的checkbox是否被选中。 如果其中任何一个或全部未被检查,则检查它们并尝试再次build立。
-
如果上述解决scheme不起作用,请按照上述步骤2中提到的顺序进行操作,即使所有checkbox都已选中,取消选中它们,再次检查并再次尝试构build。
-
构build顺序和项目依赖关系:
转到“解决scheme资源pipe理器” 。 右键点击解决scheme。 转到“Project Dependencies …” 。 您将看到2个选项卡: “依赖关系”和“构build顺序” 。 此构build顺序是解决scheme构build的顺序。 检查项目依赖关系和构build顺序,以validation是否有一个项目(如'project1')依赖于其他项目(比如'project2')正在尝试构build之前(project2)。 这可能是错误的原因。
-
检查缺less.dll的path:
检查缺less的.dll的path。 如果path包含空间或任何其他无效的path字符,请将其删除并再次尝试编译。
如果这是原因,那么调整构build顺序。
第(2)节:
我的具体情况是:
我尝试了各种排列和组合的所有步骤,重新启动VS几次。 但是,这并没有帮助我。
所以,我决定摆脱我遇到的其他错误(“源文件无法打开('未指定的错误')')。
我遇到了一个博客: http : //www.anujvarma.com/tfs-errorsource-file-could-not-be-opened-unspecified-error/#comment-1539
我试着在那个博客中提到的步骤,我摆脱了错误'源文件无法打开('未指定的错误')' ,令人惊讶的是我摆脱了其他错误('元数据文件无法find')以及。
第(3)节:
故事的道德启示:
尝试所有解决scheme,如上面(1)所述(和其他解决scheme),以摆脱错误。 如果没有任何结果,按照上面第(2)节中提到的博客, 从.csproj文件中删除源控件和文件系统中不存在的所有源文件的条目 。
build议的答案不适合我。 错误是另一个问题的诱饵。 发现我的目标是一个略微不同的.NET版本,这被标记为编译器的警告,但造成build设失败。 这应该被标记为错误而不是警告
closures并重新开放VS 2013为我工作!
我得到了同样的错误“元数据文件”.dll“无法find”,我尝试了上述几件事情,但错误的原因是,我引用第三方DLL的目标.Net版本高于我的项目目标.Net版本。 所以解决办法是改变我的项目的目标
在我的情况下,这是由.NET框架版本错过匹配的原因。
一个项目是3.5,另一个项目是4.6.1
我也遇到了这个问题。 首先,你必须手动build立你的DLL项目,右键单击Build。 然后它会工作。
那么以上没有任何工作对我来说,所以这让我想到为什么我点击并希望作为开发人员时,我们应该真正了解这里发生了什么。
这似乎很明显,这个不正确的元数据文件引用必须在某个地方。
快速search.csproj文件显示有罪行。 我有一个部分叫,似乎挂在旧的不正确的文件path。
<ItemGroup> <ProjectReference Include="..\..\..\MySiteOld\MySite.Entities\MySite.Entities.csproj"> <Project>{5b0a347e-cd9a-4746-a3b6-99d6d010a6c2}</Project> <Name>Beeyp.Entities</Name> </ProjectReference> ...
所以一个简单的解决scheme确实如此:1)备份你的.csproj 2)在.csproj文件中find不正确的path,并适当地重命名
请确保你备份你的旧.CSPROJ之前,你FIDDLE
在我的情况下,我错误地安装了我的目录。
如果您的解决schemepath类似于“我的项目%2c非常stream行的%2cunit testing%2c软件和Hardware.zip”,它不能parsing元数据文件,也许我们应该防止像%2c一些无效的单词。
将path重命名为正常名称解决了我的问题。
我也是用这个问题拉我的头发,但是尝试了以上之后,唯一对我有用的东西是在我的解决scheme中逐个打开每个项目并逐个构build它们。
然后我closuresVS2013,重新打开我的解决scheme,它编译好。
这很奇怪,因为如果我点击我的解决scheme资源pipe理器中的每个项目,并试图以这种方式构build它们,它们都失败了。 我不得不单独打开他们自己的解决scheme。
第31个答案…我添加了一个新的项目到我的解决scheme,并开始得到这个。
原因? 我带来的项目是针对一个不同的.Net框架(4.6和我的另外两个是4.5.2)
对我来说,下一步工作:find不是build立项目删除/添加解决scheme中的项目的引用。
我的问题的实例是由一个共同的项目,它有一个重复的类名称(在不同的文件名下)。 奇怪的是,VS无法检测到,而是只是吹了构build过程。
对我来说,它试图在一个用来包含Project的path中find一个DLL,但是我们已经把它移到了一个新的目录中。 该解决scheme有正确的path,但Visual Studio不知何故保持在旧的位置。
解决scheme:重命名每个问题项目 – 只需添加一个字符或其他 – 然后将其重命名为原来的名称。
这必须在Visual Studio中重置一些某种全局caching,因为这会清除这个问题,还有几个像这样的问题,而像Clean这样的东西不会。
我在VS 2012中遇到了一个有很多项目的解决scheme。 为我解决的问题是,手动重build解决scheme中的每个项目的顺序与项目构build顺序相同(右键单击并在“解决scheme资源pipe理器”中重新生成)。 最终我遇到了一个给我一个编译错误。 我修复了这个错误,然后解决scheme会正确地build立。
对于我来说,当我把一个新的项目包括到解决scheme。
VSselect自动.net框架到4.5。
我改成了像其他库和工作一样的4.5.2版本。
希望它有帮助。
几年后回来。 这个问题很可能与Windows最大path限制有关:
http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx#maxpath
在我的情况下,问题是我手动删除了一个非编译文件被标记为“失踪”。 一旦我删除了对现在丢失的文件的引用并重新编译 – 一切都很好。
运行VS2013。 看起来,构build依赖关系是不正确的。 删除* .suo文件确实解决了我遇到的问题。
我在尝试发布Web应用程序时出现此错误。 原来,一个类的属性被包裹进去
#if DEBUG public int SomeProperty { get; set; } #endif
但财产使用不是。 显然,在没有DEBUG
符号的发布configuration中完成发布。
就我而言,我曾经在特定的(空的)名称空间中注释过类。
namespace XYZW { //class code }
当我删除命名空间代码和它的导入(使用)命令 – 它解决了这个问题。
在这个版本中,也有人说 – 除了项目的缺失之外,
错误CS0234:名称空间“XYZ”中不存在types或名称空间名称“W”(是否缺less程序集引用?)
在我的情况下,这些错误是由NuGet包pipe理器中的一些损坏引起的。 解决scheme的子项目没有build成,但由于元数据错误没有显示错误。 一旦所有NuGet软件包得到纠正,项目可以再次正确地build立。
在我的情况下,这个问题是由一个简单的构build错误造成的:
error CS0067: The event 'XYZ' is never used
出于任何原因,没有出现在错误窗口中。 正因为如此,VS构build系统似乎错过了错误,并试图build立依赖项目,这反过来又与恼人的元数据消息失败。
这个build议听起来很愚蠢 – 首先看看你的输出窗口! 这个想法打了我之前花了我半小时
Couse的问题可能是你混合添加引用解决scheme中的dll和项目。
如果你有项目A,B和C.
引用B和C作为解决scheme中的项目。 B引用C作为dll(引用文件)
您可以单独构build每个项目,但不能重新生成以下列结尾的解决scheme:无法find元数据文件“C.dll”。
将参考文件更改为解决scheme中的项目有所帮助。
在我个人的情况下,我没有给解决scheme中的一个项目添加引用,这就是为我踢的错误。
如果您使用伪装程序,则可能会显示此错误,删除伪装会导致项目的成功构build。
打开一个entity framework被引用的项目后,我收到了这个错误,于是我删除了这样的引用,并通过这个包的pipe理器重新安装了entity framework版本6.0.0.0:
install-package entityframework -version 6.0.0.0
错误仍然显示,所以我认为那些参考,因为有一个旧版本的EF据称“预安装”的项目,但没有真正的工作。
所以我去了文件packages.config,注意到有另一个参考:
<packages> **<package id="EntityFramework" version="5.0.0" targetFramework="net45" />** <package id="EntityFramework" version="6.0.0" targetFramework="net45" /> </packages>
然后,我删除了行,清理和重build项目和容器解决scheme,它终于工作。
希望这可以帮助有类似情况的人。
我遇到过同样的问题。 在我的情况下,该项目仍然build立在发布模式,这就是当我试图build立在debugging失败。
我最终做了什么来解决这个问题是简单地将所有的dll(和我的发行版文件夹中的其他文件)复制到我的debug文件夹中。 在完成每个项目之后,错误消失了。
我有类似的问题,当我反编译非常旧的库,这是部署在生产环境,但源代码丢失。
我采取了.dll,反编译和生成的项目和解决scheme。 由于这种错误,我无法构build解决scheme。
上面的提示没有帮助,但过了一段时间后,我注意到在一些项目中缺less像System.dll这样的几个程序集的引用。
假设项目A依赖于项目B.项目B中没有对System.dll的引用,但是构build后的错误类似于“元数据文件”B.dll“无法find”
在项目B中没有关于丢失System.dll的错误。
在项目B中添加像System.dll这样的libraties引用解决了这个问题。 (System.Data,System.DirectoryServices等)