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

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

通过ncover运行nunit时得到这个。 任何想法?

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

清理解决scheme,重build所有内容,然后重试。

另外,如果这是对GAC中某些内容的引用,请注意。 可能是某处某处指向了不正确的版本。 确保(通过每个引用的属性)select了正确的版本或将特定版本设置为false。

我最近有这个问题,我在有问题的DLL上运行“depends.exe”。 它向我展示了dll是用x86编译的,而一些依赖用x64编译的。

如果你仍然有麻烦,我会build议使用depends.exe。

这通常发生在testing环境的某个DLL的版本与开发环境不匹配时。

清理并构build您的解决scheme,并将所有的DLL发送到发生错误的环境中,以解决问题

在我的情况下,一个wcfrest服务项目,我不得不在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> 

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

 <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> 

在我的特殊情况下,我通过在VBScript中完成的CreateObject得到了这个结果。 在我的情况下,原因是驻扎在GAC中的程序集版本,比我编译的版本还要旧。 (试图解决早期的问题,我在GAC中安装了程序集)。

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

当通过共享文件夹访问来自不同计算机的项目文件时,我遇到了类似的问题。 在我的情况下,干净+ reabuild没有帮助。 必须从输出目录中删除bin和objects文件夹。

在我的情况下,这是因为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> 

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

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

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

无论何时build立引用的程序集或重build其他任何引用X的项目,API项目的程序集都会使用较低的版本进行更新。 并得到这个大会参考错误。

重build工程,但在我的情况下,我想要一个长期的解决scheme。

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

这里只是另一个案例。 从第一次反编译XML文件到VS2010 / .NET 4下的对象时,我从Managed Debugging Assistant中得到了这个错误。一个包含这些对象的类的DLL在生成后事件(通常是Microsoft风格的东西)中生成。 在同样的解决scheme中工作得非常好,在另外一个项目中出现了问题。 错误文本:

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

由于这里的一些答案提示平台不匹配,我注意到3个项目和解决schemeselect了“混合平台”configuration,3个项目被编译为x86而不是AnyCPU。 我没有特定于平台的代码(尽pipe一些供应商提供的DLL依赖于几个x86库)。 我用这个replace了所有出现的x86到AnyCPU:

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

然后该项目将build立,但运行或debugging代码的所有选项将变灰。 重新启动VS不会帮助。

为了防万一,我使用了git来引用x86库,但是保留了所有我编译的代码的AnyCPU。

对于Winform应用程序,在F5或开始debuggingbutton后灰色? 我卸载并重新启动了项目(这也是最初出现问题的地方)。

之后,一切都恢复原状:程序运行时没有出现最初的错误。

请参阅http://www.catb.org/jargon/html/R/rain-dance.html,http://www.catb.org/jargon/html/V/voodoo-programming.html或http::// www .catb.org /行话/ HTML /我/ incantation.html和链接。

我有问题,它不会find贝宝大会,这是因为我已经命名我的解决scheme贝宝。 我敢肯定这不会是任何人的答案,但认为我会分享它无论如何: C#ASP.NET MVC贝宝没有find汇编

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

如果您尝试将组件添加到Visual Studio中时出现此错误,请尝试安装怪异的开发工具( Microsoft.VisualStudio.TemplateWizardInterface

考虑这个解决scheme(礼貌larocha(谢谢,无论你是谁)):

  1. 在文本编辑器中打开C:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ devenv.exe.config
  2. find这个string:“ Microsoft.VisualStudio.TemplateWizardInterfac e”
  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