HRESULT:0x80131040:找到的程序集的清单定义与程序集引用不匹配


69

找到的程序集的清单定义与程序集引用不匹配

通过ncover运行nunit时得到此信息。任何想法?


5
您可能需要重新命名标题和问题,以吸引更多的眼球。诸如“我正在尝试执行X并且出现此错误:{错误说明} ...等
类似

11
很好,我可以通过错误代码找到此问题。
Leandro

旧线程,但常见问题。对我而言,原因是由于某种原因,我有两个运行相同解决方案的Visual Studio实例。另一个在任务栏上不可见,而仅在任务管理器上可见。将两者都关闭,然后进行清理和重建。
萨米(Sami)2015年

Answers:


54

这是程序集之间的不匹配:从程序集引用的DLL没有预期的方法签名。

清洁解决方案,重建所有内容,然后重试。

另外,如果这是对GAC中的内容的引用,请当心。可能是某处指向错误的版本。确保(通过每个引用的属性)确保选择了正确的版本或将“特定版本”设置为false。


9
有没有办法强迫编译器在编译时检查这种事情?我可以保证这是VS2005中的默认设置。
马斯洛

10

我最近遇到了这个问题,并在有问题的dll上运行了“ depends.exe”。它告诉我dll是在x86中编译的,而某些依赖项是在x64中编译的。

如果仍然有麻烦,我建议您使用depends.exe。


5
还有Depends.Net,netomatix.com / development / DependsNet.aspx。 我的问题是平庸的,module1想加载module2版本5.0.0.0,而module2实际上是5.0.8.3760。Depends并未对此进行标记,而Depends.Net则进行了标记。
RenniePet 2011年

1
链接断开到DependNet,github.com/ isindicic/DependencyWalker.Net/ releases我对该exe进行了反编译,并检查了源代码,而不是狡猾,并且具有不错的UI。
OzBob

8

对于wcf rest services项目,我必须在web.config中添加一个运行时部分,其中所请求的dll是:

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246" />
        <bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
      </dependentAssembly>
.
.
.
  <runtime>

7

通过删除所有运行时部分解决了我的问题

<runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

这对我有用。自动映射器出现问题。例外:无法加载文件或程序集'AutoMapper,版本= 4.2.1.0,区域性=中性,PublicKeyToken = be96cd2c38ef1005'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040)
ziaprog

6

当测试环境的DLL之一的版本与开发环境不匹配时,通常会发生这种情况。

清理并构建您的解决方案,并将所有DLL带到发生错误的环境中,该错误应予以解决。


5

通过共享文件夹从其他计算机访问项目文件时,我遇到了类似的问题。就我而言,清理+重新构建没有帮助。不得不从输出目录中删除bin和objects文件夹。


5

只需删除bin文件夹,然后项目将重新创建所有项目,它将立即开始工作。


1
在此问题上花费了将近2个小时。删除为我工作的bin目录
布拉德

4

就我而言,我在调试时收到此消息:

"Error while calling service <ServiceName> Could not load file or assembly 'RestSharp, 
Version=105.2.3.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. 
The located assembly's manifest definition does not match the assembly reference.
(Exception from HRESULT: 0x80131040)"

原因

在我的项目中,我有两个使用RestSharp的内部组件,但是两个组件都有不同版本的RestSharp(一个带有version 105.2.3.0,另一个带有version 106.2.1.0)。

要么将其中一个组件升级到较新的版本,要么将另一个组件降级。就我而言106.2.1.0105.2.3.0与NuGet程序包管理器中的组件相比,将其降级到更新并比较安全。因此,两个组件具有相同的版本。

重建,它没有任何问题。


3

就我而言,这是因为WebGrease而发生的。我将其更新为最新版本(使用NuGet),但与依赖项冲突。我在web.config中手动添加了以下代码,它起了很大的作用。

<dependentAssembly>
    <assemblyIdentity name="WebGrease" culture="neutral" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
</dependentAssembly>

请注意,仅当错误与WebGrease有关时,我的解决方案才有效。错误代码将保持不变。另外,您需要相应地在oldVersion和newVersion中更改版本。


2

在我的特定情况下,由于 CreateObject在VBScript中完成操作。在我的情况下,原因是GAC中存在的程序集版本比我编译的版本要旧。(为解决更早的问题,我在GAC中安装了该程序集)。

因此,如果您正在使用COM可见类,则在向RegASM注册新程序集之前,请确保从GAC中删除程序集的旧版本。


1

我在一个Web api项目中遇到了这个问题。

Api项目正在使用版本3的库的nuget包。其中一个引用的程序集说X正在使用版本2的同一nuget包的旧版本。

每当构建引用的程序集或重建引用X的任何其他项目时,api项目的程序集都会使用较低版本进行更新。并得到此程序集引用错误。

重建工作正常,但就我而言,我需要长期解决方案。

我使程序集引用了相同版本的nuget包。



0

如果在尝试向Visual Studio中添加组件时遇到此错误,Microsoft.VisualStudio.TemplateWizardInterface--(在尝试安装怪异的开发工具之后)

考虑以下解决方案(由larocha提供(感谢您,无论您是谁)):

  1. 在文本编辑器中打开C:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ devenv.exe.config
  2. 查找此字符串:“ Microsoft.VisualStudio.TemplateWizardInterface”
  3. 注释掉元素,使其看起来像这样:

<dependentAssembly>
<!-- assemblyIdentity name="Microsoft.VisualStudio.TemplateWizardInterface" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" / -->
<bindingRedirect oldVersion="0.0.0.0-8.9.9.9" newVersion="9.0.0.0" />
</dependentAssembly>

来源:http : //webclientguidance.codeplex.com/workitem/15444


0

这里只是另一种情况。第一次在VS2010 / .NET 4下将XML文件反序列化为对象时,我从Managed Debugging Assistant遇到了此错误。在生成后事件(通常是Microsoft风格的东西)中会生成一个包含对象类的DLL。对于同一解决方案中的多个项目,效果非常好,在一个以上的项目中出现问题。错误文字:

检测到BindingFailure消息:显示名称为MyProjectName.XmlSerializers的程序集无法在ID为1的AppDomain的“ LoadFrom”绑定上下文中加载。失败的原因是:System.IO.FileLoadException:无法加载文件或程序集MyProjectName.XmlSerializers,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040)

由于此处的一些答案表明平台不匹配,因此我注意到有3个项目和解决方案选择了“混合平台”配置,并且为x86(而不是AnyCPU)编译了3个项目。我没有特定于平台的代码(尽管某些供应商提供的DLL依赖于一些x86库)。我用以下命令将所有出现的x86替换为AnyCPU:

for a in $( egrep '(x86|AnyCPU)' */*.csproj *.sln -l  ) ; do echo $a ; sed -i 's/x86/AnyCPU/' $a ; done

然后,将构建项目,但是所有用于运行或调试代码的选项将变为灰色。重新启动VS将无济于事。

我以git还原了对x86库的引用,以防万一,但是我编译的所有代码都保留了AnyCPU。

对于Winform应用程序,以下F5或“开始调试”按钮显示为灰色吗?我卸载并重新加载了开始的项目(这也是最初出现问题的地方)。

之后,一切恢复原状:程序可以正常运行而不会出现初始错误。

http://www.catb.org/jargon/html/R/rain-dance.htmlhttp://www.catb.org/jargon/html/V/voodoo-programming.htmlHTTP:// WWW .catb.org / jargon / html / I / incantation.html及其链接。


0

我只是从项目中删除settings.lic文件并开始工作!


0

当我更新web.config而不更新所有引用的dll时,这发生在我身上。

使用适当的差异过滤器(当心Meld的默认目录比较过滤器忽略二进制文件),可以识别出差异,复制文件,并且一切正常。


0

只需检查您的webconfig文件并删除此代码即可:-

<dependentAssembly>
    <assemblyIdentity name="itextsharp" publicKeyToken="8354ae6d2174ddca" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.5.13.0" newVersion="5.5.13.0" />
  </dependentAssembly>

0

在Designer中工作时出现此错误。我在VS 2012中进行开发,但在过去的几天中“升级”到了2017年。解决方法是关闭并重新打开VS。

这可能与我在其他地方报告过的错误有关,参考管理器无法正常工作?在这种情况下,尝试在解决方案资源管理器中添加引用时会遇到以下错误消息:

“从对COM组件的调用中返回了错误HRESULT E_FAIL。

我的解决方法是关闭解决方案,在VS2012中重新打开,添加引用,关闭2012,然后重新打开2017。荒谬的是,2017年应该发布了这么明显的错误。


0

我的WPF项目引用了3个自定义dll。我更新了其中之一,删除了引用,并将引用添加到新的dll中。它还在参考的属性中显示了正确的版本号。它正在重建,没有错误。

但是,当应用程序运行时,发生了“找到的程序集的清单..”故障,并提到了旧版本。

在寻找了几个小时的解决方案并读取了几个这样的线程之后,我想起了其他dll。其他dll之一引用了旧版本,这就是失败发生的原因。重建第二个dll并在我的WPF项目中重新创建两个引用后,失败消失了。

别忘了检查您的其他dll!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.