元数据文件“… \ Release \ project.dll”在Visual Studio中找不到
最近我开始随机得到这个消息。 我有一个在其中的几个项目的解决scheme。 当前的构build模式是debugging,所有项目的configuration设置为debugging。 但是,当我尝试运行主项目 – 有时它给了我一些错误,所有这些都是“元数据文件”… \ Release \ projectX.dll'无法find“ – 而且,看,它说关于RELEASE文件夹,尽pipe当前模式是debugging。 为什么? 我试图在所有解决scheme文件中search对“Release \ projectX.dll”的引用,并在ResolveAssemblyReference.cache文件中find一个。
我对互联网进行了很好的search,发现了一些有类似问题的人,但是没有解决scheme,或者至less没有解决scheme。
我试图删除对这些项目的引用并读取它们,但在一段时间后,我又开始得到这些错误。
这似乎是一个错误。 当我总是使用Debug模式时,为什么它会在Release文件夹中search引用的项目?
PS。 对于那些遇到这个问题的人:我解决不了一个简单的方法,它只有在我重新安装了Windows 🙁
每个人都是正确的…尝试一切…(按照一点点的顺序浪费很多时间)
- 你有错误的代码吗? 首先解决这个问题
- 清理解决scheme并重新启动Visual Studio
- 删除/添加引用
- 检查你的build造顺序瓦特/大项目和validation
- 手动重build子项目
- 将项目之间的dll手动复制到关联的bin文件夹中
- 去喝点咖啡,打一些弹球,明天再回来…你可能会想到别的东西。
我有同样的问题。 大视觉工作室解决scheme,拥有50多个项目
所有参考文献都被添加为项目。 项目构build顺序是正确的(右键单击项目并select构build顺序)。
然而,当build设一些更高层次的项目时,他们所依赖的“根”项目并没有build立起来。
问题是这些项目没有被select在当前configuration下build立(不知道这是怎么发生的)。
要检查这个select“configurationpipe理器”(生成菜单)e检查是否有问题的项目设置为生成。
当你说你删除了这些项目的引用并重新添加它们,你是如何重新添加它们的? 您是否在Visual Studio的“添加引用”对话框中使用“浏览”选项卡? 或者,您是否使用“项目”选项卡(列出解决scheme中的相邻项目)?
编辑 :如果您使用“浏览”选项卡,并手动将引用添加到/ Release文件夹中的.dll,Visual Studio将始终在该位置查找该.dll,无论您是什么模式目前在(debugging或发布)。
如果您从发布文件夹中删除实际的.dll文件(手动或通过执行“清理解决scheme”),则您的引用将中断,因为该.dll不存在。
我build议删除对ProjectX.dll的引用,并再次将其添加 – 但是这次使用“添加引用”对话框中的“项目”选项卡。 以这种方式添加引用时,Visual Studio知道从何处获取相应的.dll文件。 如果您处于debugging模式,它将从/ Debug文件夹中获取。 如果处于发行模式,则为/ Release文件夹。 您的构build错误应该消失,并且在debugging模式下,您也将不再(不正确地)引用Release .dll。
那么,我的答案不仅仅是所有解决scheme的总结,还有更多。
第(1)节:
一般解决scheme:
我有4种这样的错误('元数据文件无法find')以及1个错误说'源文件无法打开('未指定的错误')'。
我试图摆脱“无法find元数据文件”的错误。 为此,我读了很多post,博客等,发现这些解决scheme可能是有效的(在这里总结):
-
重新启动VS并尝试再次build立。
-
转到“解决scheme资源pipe理器” 。 右键点击解决scheme。 去属性 。 转到“configurationpipe理器” 。 检查“Build”下的checkbox是否被选中。 如果其中任何一个或全部未被检查,则检查它们并尝试再次build立。
-
如果上述解决scheme不起作用,请按照上述步骤2中提到的顺序进行操作,即使所有checkbox都选中,取消选中它们,再次检查并再次尝试生成。
-
构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文件中删除源控件和文件系统中不存在的所有源文件的条目 。
我以前遇到过这个问题,而我发现解决这个问题的唯一方法就是运行Clean Solution,然后重新启动Visual Studio。
对我来说,通常是closures目标框架(4.5.2而不是4.6)。如果您修复了项目的目标框架以匹配解决scheme的目标框架并构build,则会创build一个新的.dll文件。
以pipe理员身份重新打开Visual Studio。
你有没有检查configurationpipe理器设置。 在项目设置对话框的右上angular。
有时候在所有发布条目之间会出现一个debugging条目。如果是的话,那么解决scheme的dependenc grapgh创build的自动依赖关系就会变得混乱。
我们经常遇到这个问题,但是只能引用C#项目中的C ++ / CLI项目。 这显然是VS内部的一个漏洞,微软决定不修复,因为它太“复杂”了,他们承诺对现在针对VS 2010的C ++构build系统进行大修。
那是前一段时间,也许这个补丁甚至进入了VS 2008,我没有再跟进。 不过,我们典型的解决方法是
- 交换机configuration
- 重新启动Visual Studio
- 构build解决scheme
此问题是由于pdb文件或CodeContracts,以解决它:
1)清理你的输出文件夹并重build解决scheme。
2)重新configurationCodeContracts或将其禁用以进行临时构build。
希望这可以帮助。
最好的祝福,
我也看到了这个错误,在我有多个项目的解决scheme中(通常是我已经更新了一个或多个子项目以定位到4.0框架的netTiers项目)。 删除可能会有问题。 但是,通常情况下,可以先解决子项目中的所有其他错误(例如,任何缺less的引用),单独重build这些子项目,然后删除/添加对Visual Studio中的这些子项目的引用。 就我个人而言,通过单独清理解决scheme解决了这个错误,我有一点运气。
我们最近在从Office 2007升级到Office 2010之后遇到了这个问题 – 我们必须手动将项目中的引用更改为我们在某些项目中使用的Office Interops的版本14。
希望有所帮助 – 花了我们几天的时间弄清楚。
就我而言,这是由两件事引起的(VS.2012):
1)其中一个项目是为AnyCPU而不是x86configuration的
2)被引用的项目不知何故“Build”checkbox未被选中。
检查你的Build | configurationpipe理器以获得正在构build的内容和哪个平台的概述。 另外,请确保您检查debugging和发布,因为它们可能有不同的设置。
就我而言,我的代码中有一些错误。 Visual Studio显示了错误,而不是实际的错误,如语法错误或未知的类名称。 尝试清理解决scheme并在项目之后构build项目。 这样你会发现实际的错误。
再一次,这正是导致我错误的原因。
我自己也有同样的问题。
Visual Studio 2013只告诉我,它不能引用它,它无法find元数据。 当我打开我的解决scheme(其中有多个项目),它说我使用的项目比我的一个项目的框架版本低。
所以我把所有东西都切换到版本4.5,并再次运行。
我有这个问题,并花了很长时间才弄清楚。 当我从解决scheme中删除项目并用nuget包replace那些项目时,问题就出现了。
解决scheme似乎很好,但.csproj文件仍然包含这些项目作为参考多次。
似乎VS不适当地清理该文件。 它仍然引用引擎盖下的已删除的项目。 当手动删除csproj文件中的引用全部再次工作! wohoo
大多数的answares说,你需要删除你的解决scheme的库,这是真的,但是当你重新添加库的错误将再次显示。 您需要validation是否所有引用的库都有与您的解决scheme的.net框架兼容的.net框架。 然后修复代码中的所有错误并重新构build解决scheme。
我似乎还记得几个月前有类似的问题。 我通过将引用的DLL复制到Release文件夹中来暂时解决它,从而满足了Visual Studio的期望。 后来,我在实际的代码中发现了对Release DLL的引用。 您应该尝试search\ release \ project.dll的整个项目。
另外,我注意到Visual Studiounit testing项目有时会在每个指向目标DLL的testing方法上放置一个“DeploymentItem”属性,如果在Debug和Release之间切换,Visual Studio会变得困惑,如果DLL不再在预期的位置。 根据我的经验,如果您没有将自己放在“单个部署”场景中,则可以安全地删除这些属性。
我有这个问题,这是由于一个无效的方法在违规图书馆(DLL)没有返回值,例如
public bool DoSomething() { //I never bothered putting code here.... }
当我把这一切编译:)
有时VS2010将我的configuration从任何CPU切换到混合平台。 发生这种情况时,我收到此错误消息。
要解决它,我切换回任何CPU:
1.右键单击解决scheme并select属性。
2.点击configuration属性,然后点击configurationpipe理器…button。
3.在Active solution平台下,selectAny CPU
我发现当我在一个类实现的接口中仍然有一个方法声明时,通常会发生这种情况,但是之后我删除了它,并忘记将它从接口中删除。 我通常只是每30分钟保存整个解决scheme,然后恢复到早期版本,如果我找不到错误。
我最后删除了我的引用(我已经使用项目选项卡正确添加它们,并且它们用于构build就好了),手动编辑我的.csproj文件并删除不属于的奇怪条目 – 并将输出设置为debugging发布,x86和x64和任何cpu都是“\ bin” – 我build立了一次,然后重新添加引用(再次,使用项目选项卡),一切都开始为我工作。 根本不需要重新启动Visual Studio。
对我来说,这是由于生成目标已被重写为不输出的DLL。 删除这个以回到默认的构build目标解决了这个问题。
这似乎发生在您签出一个解决scheme与多个项目之间有引用,你还没有build立它之前。 如果您直接引用dll,而不是引用项目,则会收到此消息。 您应始终使用“添加引用”对话框中的“项目”选项卡,以在同一解决scheme中添加对项目的引用。 这样,VS就可以知道构build解决scheme的正确顺序
如Vidar所述,今天也发生在我身上。
我有一个帮助程序库中的生成错误(这是其他项目引用),而不是告诉我,在助手库中有一个错误,编译器出现了MetaFile-未findtypes错误的列表。 修正了Helper Library中的Build错误之后,MetaFile错误消失了。
VS中有没有什么设置来改善呢?
我有同样的问题。 我注意到,我的数据库上下文(EF4)位于项目的DLL不能识别出于某种原因。 我删除它,并创build另一个。 为我解决了这个问题。
今天有同样的问题。
我的应用程序,一个Windows窗体应用程序,意外地有一个参考自己。 奇怪的。
一旦删除,错误消失。
每当我将位于Windows窗体项目本身的用户控件拖到窗体中时,都会添加引用。
我同意这里发布的大部分答案。 但是,如果所有build议的解决scheme都不起作用,请考虑在错误列表中可能存在另一种错误,即阻止VS为其他项目构build项目所需的DLL。 然后,不pipe构build顺序或configuration如何,在排除其他问题之前,您将无法摆脱“元数据”错误。
检查您的项目path。 它不应该有像逗号和空格这样的不规则的字符
例如,这是不正确的path:d:\ my applications \ Project1
这是真正的pathd:\ my_applications \ Project1
当磁盘中存在非字母和数字字符时,Visual Studio无法生成项目,并且不显示此错误的消息!
另外一些安装工具在开始安装时也有同样的问题,无法解压。
我有同样的问题。 手动删除和添加DLL没有帮助。 ClassLibraries没有编译所有的项目,并在项目的… \ bin \ Debug文件夹中丢失[因为我错误地清理了解决scheme]。 由于类库没有编译,意味着其中一个子项目可能存在某些错误 。
解决scheme:由于我的dll在… \ bin \ Release文件夹中,我试图在Release模式下重build,并在其中一个子项目的一行中发现错误。 解决错误并重build解决scheme摆脱了构build错误。