错误“ Metadata file’... Release project.dll’could not be found in Visual Studio”

最近我开始随机收到这样的信息:

在 Visual Studio 中找不到元数据文件“ ... Release project.dll”

我有一个解决方案,其中有几个项目。当前的生成模式是 Debug,并且所有项目的配置都设置为 Debug。但是当我尝试运行主项目时——有时它会给我一些错误,所有这些都是“元数据文件‘ ... ReleaseprojectX.dll’找不到”——看,它提到了 RELEASE 文件夹,尽管当前模式是 Debug。为什么?我尝试在所有解决方案文件中搜索“ ReleaseprojectX.dll”的引用,并在 ResolveAssemblyReference.cache 文件中找到了一个。

我在互联网上仔细搜索了一下,发现有几个人也有类似的问题,但是没有解决方案,或者至少没有可行的解决方案。

我试图删除对这些项目的引用并读取它们,但是有一段时间我又开始出现这些错误。

看起来像只虫子。当我总是使用调试模式时,它为什么要在发布文件夹中搜索引用的项目?

附言。对于那些遇到这个问题的人: 我不能用简单的方法解决它。它消失后,我重新安装 Windows: (

200371 次浏览

我好像记得几个月前也遇到过类似的问题。我通过将引用的 DLL 复制到发布文件夹来临时解决这个问题,从而满足了 VisualStudio 的期望。后来,我在实际代码中发现了对发布 DLL 的引用。您应该尝试在整个项目中搜索 release project.dll。

此外,我注意到 Visual Studio 单元测试项目有时会在每个测试方法上放置一个“ DeploymentItem”属性,指向目标 DLL,如果你在 Debug 和 Release 之间切换,如果 DLL 不在预期位置,Visual Studio 可能会感到困惑。根据我的经验,如果您没有将这些属性作为“单一部署”场景的一部分放在那里,那么可以安全地删除它们。

你检查过配置管理器设置了吗? 在项目设置对话框的右上角。

有时候,在所有的发布条目之间会进入一个调试条目。 如果是这样,解决方案的依赖关系图所创建的自动依赖关系就会完全混淆。

当您说您删除了对这些项目的引用并重新添加了它们时,您具体是如何重新添加它们的?您是否在 VisualStudio 的“添加引用”对话框中使用了“浏览”选项卡?或者,您是否使用了“ Projects”选项卡(其中列出了解决方案中的相邻项目) ?

编辑 : 如果使用“ Browse”选项卡,并手动将引用添加到。Dll,则 VisualStudio 将始终查找位于/Release 文件夹中的。Dll,不管您当前处于什么模式(调试或发布)。

如果你把真正的。Dll 文件(手动或通过执行“清理解决方案”) ,然后您的引用将中断,因为。Dll 不存在。

我建议删除对 ProjectX.dll 的引用,并再次添加它——但是这一次,使用“ Add Reference”对话框中的“ Projects”选项卡。以这种方式添加引用时,VisualStudio 知道从哪里获取适当的。DLL.如果您处于 Debug 模式,它将从/Debug 文件夹中获取它。如果处于发布模式,/Release 文件夹。您的构建错误应该消失,并且您也将不再(不适当地)引用一个发布。调试模式下的 dll。

我们经常遇到这个问题,但是只有在引用 C # 项目中的 C + +/CLI 项目时才会遇到。这显然是 Visual Studio 内部的一个 bug,微软决定不去修复,因为它“太复杂了”,而且他们承诺对 C + + 编译系统进行彻底改造,这个系统现在是 Visual Studio 2010的目标。

那是很久以前的事了,也许这个修复甚至进入了 VisualStudio2008; 我没有继续跟进。然而,我们通常的解决办法是

  • 开关配置
  • 重新启动 VisualStudio
  • 构建解决方案

我以前遇到过这个问题,我发现解决这个问题的唯一方法是运行 Clean Solution,然后重新启动 VisualStudio。

这个问题是由 pdb 文件或 CodeContracts 引起的。

为了解决这个问题:

  1. 清理输出文件夹并重新生成解决方案。

  2. 重新配置 CodeContracts 或禁用它进行临时生成。

在我有多个项目的解决方案中(通常是 netTiers 项目,其中我更新了一个或多个子项目以针对4.0框架) ,我也看到了这个错误。移除可能会有问题。然而,通常可以解决这个问题,首先修复子项目中的所有其他错误(例如,任何丢失的引用) ,单独重建这些子项目,然后在 Visual Studio 中删除/添加任何对这些子项目的引用。就我个人而言,通过单独清理解决方案来解决这个错误几乎没有运气。

我遇到了这个问题,这是由于有问题的库(dll)中有一个无效的方法没有返回值,例如。

public bool DoSomething()
{
//I never bothered putting code here....


}

当我把这个注释出来的时候,所有的东西都被编译了:)

当您签出一个包含多个项目的解决方案,这些项目之间有引用时,似乎就会发生这种情况,而且您以前从未构建过该解决方案。如果您直接引用 dls,而不是引用项目,您将得到这条消息。 应始终使用“添加引用”对话框中的“项目”选项卡来添加对同一解决方案中项目的引用。这样,VS 就可以知道构建解决方案的正确顺序

在从 Office2007升级到 Office2010之后,我们最近遇到了这个问题——我们不得不手动将项目中的引用更改为某些项目中使用的 OfficeInterops 的版本14。

希望能有所帮助,我们花了几天才弄明白。

正如维达所描述的那样,今天也发生在我身上。

我在 Helper Library 中有一个 Build 错误(被其他项目引用) ,编译器没有告诉我 Helper Library 中有一个错误,而是列出了 MetaFile-not-found 类型错误。在更正 Helper Library 中的 Build 错误之后,MetaFile 错误消失了。

在 VS 中是否有任何设置来改进这一点?

有时 VS2010会将我的配置从任意 CPU 切换到混合平台。

为了解决这个问题,我切换回任意 CPU:
右键单击解决方案并选择属性。
2. 单击“配置属性”,然后单击“配置管理器...”按钮。
3. 在活动解决方案平台下选择“任意 CPU”

我有完全相同的问题。大视觉工作室的解决方案与50多个项目。

所有引用都作为项目添加。 项目生成顺序正确(右键单击项目并选择生成顺序)。

然而,在建设一些较高水平的项目时,他们所依赖的“根”项目没有建成。

问题是,这些项目没有被选中在当前配置下构建(不知道这是如何发生的)。

要检查这个选择“配置管理器”(构建菜单) e 检查是否有问题的项目设置为构建。

我也有同样的问题。我注意到位于项目 dll 中的 db 上下文(EF4)由于某些原因无法识别。我删除了它,然后创建了另一个。这就解决了我的问题。

今天也遇到了同样的问题。

我的应用程序,一个 Windows 窗体应用程序,意外地引用了它自己。

一旦删除,错误就消失了。

每次我将位于 Windows 窗体项目本身中的用户控件拖动到窗体时,都会添加引用。

我发现这通常发生在我仍然在接口中有一个方法声明的时候,这个接口是类实现的,但是我后来删除了它,并且忘记了从接口中删除它。我通常只是保存整个解决方案每30分钟 n 然后只是恢复到早期版本,如果我不能找到错误。

每个人都是正确的... 尝试一切... (为了一点点到大量的时间浪费)

  1. 你有错误的代码吗? 先修复它。
  2. 清除解决方案并重新启动 VisualStudio
  3. 删除/添加引用
  4. 检查您的构建订单 w/更大的项目和验证
  5. 手动重建子项目
  6. 手动将项目之间的 dls 复制到关联的 bin 文件夹中
  7. 去喝杯咖啡,玩玩弹球,明天再来... 你可以在这段时间想点别的事情。

在我的案例中,它是由两件事情引起的(VS.2012) :

1)其中一个项目是为 AnyCPU 而不是 x86配置的

2)一个被引用的项目在某种程度上没有选中“ Build”复选框。

请检查您的 Build | Configuration Manager,以获得正在构建的内容以及为哪个平台构建的概览。还要确保您检查它的调试和发布,因为他们可能有不同的设置。

检查您的项目路径。它应该没有不规则的字符,如逗号和空格

例如,这是不正确的路径: D: 我的申请项目1

这才是真正的道路 D: my _ Applications Project1

视觉工作室无法建立该项目时,有一个非字母和数字字符在其磁盘路径,它没有显示此错误的消息!

另外,一些安装工具在开始安装时也有同样的问题,无法提取。

我也有同样的问题。手动删除和添加 dll 没有帮助。类库没有为所有的项目编译,并且在该项目的 ... 垃圾调试器文件夹中丢失了[因为我错误地清除了解决方案]。由于类库没有编译,这意味着在这些子项目中的某个地方可能存在一些错误.

解决方案: 由于我的 dls 在 释放垃圾桶文件夹中,我尝试在发布模式下重建,在一个子项目的一行中发现了一个错误。解决错误并重新构建解决方案消除了构建错误。

对我来说,Visual Studio 创建了一个“ Visual Studio 解决方案用户选项”类型的 projectname.v11。我删除了这个文件,重新启动,一切都很好。

我最终删除了我的引用(我已经使用 project 选项卡正确地添加了它们,它们过去构建得很好) ,手动编辑我的。Csproj 文件和删除奇怪的条目不属于——并设置我的调试和发布输出,x86和 x64和任何 cpu 都是“ bin”——我构建了一次,然后重新添加引用(再次使用项目选项卡) ,一切又开始为我工作。根本不需要重启 Visual Studio。

我遇到过同样的问题,这个问题背后的原因是引用项目的 dll 文件正在被其他进程使用。在我的例子中,我正在调试一个应用程序,并且应用程序附带了可视化工作室调试器。当我重新构建另一个使用相同项目的应用程序时,我得到了这个错误。分离附件之后,我成功地构建了第二个应用程序。

这个问题已经解决了。我打开了包管理器设置,点击“允许 NuGet 下载丢失的包”。该项目现在构建。

Https://github.com/gitextensions/gitextensions/issues/1969

在我的例子中,我的代码中有一些错误。VisualStudio 显示了错误,而不是实际的错误,比如语法错误或未知的类名。尝试清洁解决方案和建设项目后的项目。这样您就可以发现实际的错误。

同样,这也是导致 错误的原因。

对我来说,这是由于 Build 目标被重写为不输出 dll 而造成的。移除此选项以回到默认的 Build 目标修复了这个问题。

我今天也遇到了这个问题。我的问题是由 循环依赖性循环依赖性引起的。项目 A 引用了项目 B,反之亦然。

您是否在项目中使用 SQLMETAL 之类的数据库代码生成工具?

如果是这样,你可能会面临一个多元化到非多元化的过渡问题。

在我的例子中,我注意到一些旧的复数(*)表名称(默认情况下,SQLMETAL 在其上添加一个“ <是的trong>是的”字母)引用 SQLMETAL 生成的类。

因此,我最近禁用了 名称的多元化,在重新生成一些与数据库相关的类之后,有些类丢失了它们的“ <是的trong>是的”前缀。因此,对受影响表类的所有引用都无效。由于这个原因,我遇到了以下几个编译错误:

‘ xxxx’不包含‘ TableNames’的定义,也找不到接受类型为‘ yyyy’的第一个参数的扩展方法‘ TableNames’(是否缺少 using 指令或汇编引用?)

正如您所知,我只在出现错误时才阻止程序集编译。那就是缺少的程序集可链接到依赖程序集,导致原始“元数据文件‘ XYZ’无法找到”

在手动修复受影响的类表引用到它们的当前名称(不复数)之后,我终于能够让我的项目恢复生机!

(*)如果选项 Visual Studio > 工具菜单 > 选择 > 数据库工具 > O/R 设计师 > 名称的多元化被启用,一些 SQLMETALl 代码生成器将在一些生成的表类的末尾添加一个“ <是的trong>是的”字母,尽管表在目标数据库上没有“ s”后缀。有关详情,请参阅 http://msdn.microsoft.com/en-us/library/bb386987(v=vs.110).aspx

这篇文章有很多好的建议,只是多加了一条。

在我的案例中,在合并过程中,解决方案文件似乎缺少一些项目引用。手动将项目重新添加到解决方案中修复了它。您也可以手动编辑解决方案文件,但是您需要小心并且知道您在做什么。

嗯,我的答案不仅仅是所有解决方案的总结,而且它提供了更多的东西

第(1)款:

一般解决方案:

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

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

  1. 重新启动 VS 并再次尝试构建。

  2. 转到 “解决方案资源管理器”。右键单击“解决方案”。转到 物业。转到 ‘配置管理器’。选中 “建造”下的复选框是否已经选中。如果它们中的任何一个或所有的都没有被检查,那么检查它们,然后再次尝试构建。

  3. 如果上述解决方案不起作用,那么按照上面步骤2中提到的顺序进行,即使选中了所有复选框,也取消选中它们,再次选中并尝试再次构建。

  4. 生成顺序和项目依赖项:

    转到 “解决方案资源管理器”。右键单击“解决方案”。转到 “依赖项目”。您将看到两个选项卡: “依赖关系”“建立秩序”。此生成顺序是生成解决方案的顺序。检查项目依赖关系和构建顺序,以验证某个依赖于其他项目(比如‘ project1’)的项目(比如‘ project2’)是否试图在那个项目(project2)之前构建。这可能是错误的原因。

  5. 检查缺少的路径:

    检查失踪人员的路径。DLL.如果路径包含空格或任何其他无效的路径字符,请删除它,然后再次尝试构建。

    如果这是原因,那么调整构建顺序。


第(2)款:

我的个案是:

我尝试了以上所有的步骤与各种排列和组合与重新启动 VS 几次。但是,它没有帮助我。

因此,我决定去掉我遇到的其他错误(“源文件无法打开”(“未指定错误”))。

我偶然发现了一个博客: Http://www.anujvarma.com/tfs-errorsource-file-could-not-be-opened-unspecified-error/#comment-1539

我尝试了该博客中提到的步骤,我摆脱了错误 “无法打开源文件(‘未指定错误’)”和令人惊讶的是,我摆脱了其他错误 (‘元数据文件找不到’)以及。


第(3)款:

这个故事的寓意是:

尝试上面第(1)节提到的所有解决方案(以及任何其他解决方案) ,以消除错误。如果没有任何进展,根据上面第(2)节提到的博客,删除源代码管理和文件系统中不再存在的所有源代码文件的条目。Csproj 文件


我自己也有同样的问题。

VisualStudio2013只告诉我它不能引用它,也找不到元数据。当我打开我的解决方案(其中包含多个项目)时,它说我使用的项目低于我的一个项目的框架版本。

所以我把所有东西都换成了4.5版,它又能用了。

在尝试添加项目引用时,我遇到了这个问题,在进行了大量的搜索和尝试之后,我的构建配置和输出是正确的。

我最后只是从源和引用项目中删除了 垃圾箱对不起文件夹。

老实说,我相信是 obj文件夹没有包含正确的元数据或损坏的元数据。

一切都解决了。

这就是 Visual Studio 2015-. NET 4.6项目。

更新:

上述方法在第一次构建时起作用,但是在后续的构建中失败了,所以我最终重新创建了解决方案文件,并删除和读取了在我的项目文件中引用错误的 NuGet 包,这些包指向了错误的 提示路径

到目前为止,它似乎已经在后续的构建中得到了修复。

Csproj 文件中的示例引用

<ItemGroup>
<Reference Include="Antlr3.Runtime, Version=3.5.0.2, Culture=neutral, PublicKeyToken=eb42632606e9261f, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll</HintPath>
</Reference>
</ItemGroup>

我也遇到过类似的问题,我删除了一些类和一个接口,然后我的构建就开始失败了。

  1. 删除所有构建,以便没有项目构建(配置管理器)
  2. 检查构建顺序(截图并将其放入 Paint: D 中)
  3. 逐个启用,每次清理、重建和构建。
  4. 现在您知道了失败的项目。 : -)

在我的情况下,我有一个文件夹与一个接口内。 解决方案。愚蠢的项目。接口 我注释掉了接口 IUnicorns (FooSolution)。愚蠢的项目。IUnicorns) ,这样它就不会再被使用了。 没有其他项目使用 IUnicorn 了。一切都很好。

但是..。 其他一些项目仍然使用该文件夹的语句:

using FooSolution.StupidProject.Interfaces

解决方案:

  1. 而不是像这样注释界面,

    //公共接口 IUnicorn {

我还在接口上方注释了名称空间,如下所示:

// namespace FooSolution.StupidProject.Interfaces
//{
//   public interface IUnicorn {
  1. 我搜索了我的其他项目,并确保这个名称空间不再有用处!
  2. 清洁、重建和一杯好咖啡; -)

结论: 检查你在其他项目中的使用情况。

以管理员身份重新打开 VisualStudio。

第30个答案: -)

在 VS2015:

  • 右键单击“解决方案”
  • 选择“项目生成顺序”
  • 查看 ProjectBuildOrder 中的项目列表
  • 按照这个顺序生成每个项目
  • 检查输出

在我的例子中,一步一步地做有助于发现我的问题是什么,而不会出现所有这些错误。

如果你一定要知道,我在项目设置时通过 NuGet 添加了实体框架(EF)6.1.3。NET 4.5.2.我后来降低了。NET 框架下降到4,然后错误更加明显。通过 NuGet,我卸载了 EF 并重新添加了它。

在 VS2015中,删除“ References”下的“ Analyzer”解决了这个问题

对我来说,通常是目标框架关闭(4.5.2而不是4.6)如果您修复项目的目标框架以匹配解决方案的目标框架并进行构建,那么一个新的。将创建 dll。

我有这个问题,花了很长时间才弄明白。问题出现了,当我从解决方案中删除项目,并用 nuget 软件包替换那些项目。

解决方案看起来不错,但是. csproj 文件仍然多次包含这些项目作为参考。

似乎 VS 没有适当地清理该文件。它仍然在引用引擎盖下被移除的项目。当从 csproj 文件中手动删除引用时,所有工作再次开始!哇哦

大多数回答都说您需要删除解决方案的库,这是真的,但是当您重新添加库时,错误将再次显示。然后修复代码中的所有错误并重新构建解决方案。

检查一下。是否隐藏项目根目录中的 vs 文件夹。我的不是(也应该是) ,因为我是从另一台电脑上复制/粘贴的。删除它解决了问题,VisualStudio2015刚刚为我重新创建了它。

对我来说,就是删除/删除整个.vs 文件夹(这是一个不可见的文件夹) ,然后:

- Build
- Rebuild

完成了。

我有同样的问题,没有提供的答案之前修复它。显然,这可能是一个问题。Csproj 文件。由于某种原因,对代码中任何地方都没有创建的文件的引用仍然“缺失”。

用文本编辑器打开你的.csproj 文件,寻找丢失的文件,删除,保存,然后高兴起来。

对我来说,我是在主人旁边的树枝上工作。所以我检查了 Master Branch 运行了一个版本,然后检查了我的分支。问题解决了。如果您已经在 master 上,我建议您检查以前的提交,然后构建它。

对我来说,我使用的是 EntityFramework.6.2.0 更新到 EntityFramework。6.4.0然后问题就解决了。