无法加载文件或程序集“Elasticsearch.Net”或其中一个依赖项

时间:2017-01-28 00:58:03

标签: c# .net-assembly nest

我最近从NEST 1.9升级到NEST 2.3。由于某种原因,.NET中的程序集尚未更新,仍在寻找ElasticSearch.net包Elasticsearch.Net, Version=1.0.0.0

我尝试卸载然后安装ElasticSearch.net然后安装NEST,然后重新启动Visual Studio 4.6。我使用.NET 45.

  

无法加载文件或程序集“Elasticsearch.Net”或其中一个   依赖。定位程序集的清单定义没有   匹配程序集引用。 (HRESULT异常:0x80131040)

     

描述:执行期间发生了未处理的异常   当前的网络请求。请查看堆栈跟踪了解更多信息   有关错误的信息以及它在代码中的起源。

     

异常详细信息:System.IO.FileLoadException:无法加载文件或   程序集“Elasticsearch.Net”或其依赖项之一。位于   程序集的清单定义与程序集引用不匹配。   (HRESULT异常:0x80131040)

     

来源错误:

     

执行期间生成了未处理的异常   当前的网络请求。有关的来源和位置的信息   可以使用下面的异常堆栈跟踪来识别异常。

     

装配加载跟踪:以下信息可能对您有所帮助   确定无法加载程序集“Elasticsearch.Net”的原因。

     

===预绑定状态信息===日志:DisplayName = Elasticsearch.Net(部分)WRN:部分绑定信息是   为程序集提供:WRN:程序集名称:Elasticsearch.Net |   域ID:2 WRN:仅部分程序集时发生部分绑定   提供显示名称。警告:这可能会导致活页夹加载   装配不正确。警告:建议完全提供   组件的指定文本标识,WRN:由组件组成   简单名称,版本,文化和公钥令牌。警告:见   白皮书http://go.microsoft.com/fwlink/?LinkId=109270了解更多信息   这个问题的信息和常见解决方案。日志:Appbase =   file:/// C:/ wht / We Heart Tours / wht / LOG:Initial PrivatePath =   C:\ wht \ We Heart Tours \ wht \ bin调用程序集:(未知)。   ===日志:此绑定在默认加载上下文中启动。日志:使用应用程序配置文件:C:\ wht \ We Heart Tours \ wht \ web.config   日志:使用主机配置文件:   C:\ Users \ amocanu \ Documents \ IISExpress \ config \ aspnet.config日志:使用   来自的机器配置文件   C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ CONFIG \ machine.config中。   日志:此时政策未适用于参考(私人,   自定义,部分或基于位置的程序集绑定)。日志:正在尝试   下载新的URL   file:/// C:/ Users / amocanu / AppData / Local / Temp / Temporary ASP.NET   文件/根/ 412255cb / fee8480d / Elasticsearch.Net.DLL。日志:正在尝试   下载新的URL   file:/// C:/ Users / amocanu / AppData / Local / Temp / Temporary ASP.NET   文件/根/ 412255cb / fee8480d / Elasticsearch.Net / Elasticsearch.Net.DLL。   日志:尝试下载新的URL文件:/// C:/ wht / We Heart   旅游/白色/斌/ Elasticsearch.Net.DLL。日志:使用应用程序   配置文件:C:\ wht \ We Heart Tours \ wht \ web.config日志:使用   主机配置文件:   C:\ Users \ amocanu \ Documents \ IISExpress \ config \ aspnet.config日志:使用   来自的机器配置文件   C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ CONFIG \ machine.config中。   日志:在应用程序配置文件中找到重定向:2.0.0.0   重定向到1.0.0.0。日志:政策后参考:Elasticsearch.Net,   Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 96c599bbe3e70f5d日志:   试图下载新的URL   file:/// C:/ Users / amocanu / AppData / Local / Temp / Temporary ASP.NET   文件/根/ 412255cb / fee8480d / Elasticsearch.Net.DLL。日志:正在尝试   下载新的URL   file:/// C:/ Users / amocanu / AppData / Local / Temp / Temporary ASP.NET   文件/根/ 412255cb / fee8480d / Elasticsearch.Net / Elasticsearch.Net.DLL。   日志:尝试下载新的URL文件:/// C:/ wht / We Heart   旅游/白色/斌/ Elasticsearch.Net.DLL。警告:比较程序集名称   导致不匹配:主要版本错误:无法完成设置   汇编(hr = 0x80131040)。探测终止。

     

堆栈追踪:

     

[FileLoadException:无法加载文件或程序集   'Elasticsearch.Net'或其依赖项之一。定位组件   清单定义与程序集引用不匹配。 (例外   来自HRESULT:0x80131040)]

     

[FileLoadException:无法加载文件或程序集   'Elasticsearch.Net,Version = 1.0.0.0,Culture = neutral,   PublicKeyToken = 96c599bbe3e70f5d'或其依赖项之一。该   找到程序集的清单定义与程序集不匹配   参考。 (HRESULT异常:0x80131040)]

2 个答案:

答案 0 :(得分:1)

如果它对任何人有帮助,
解决方案是编辑Web.config并更改

   <assemblyIdentity name="Elasticsearch.Net" publicKeyToken="96c599bbe3e70f5d" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="1.0.0.0" />

   <assemblyIdentity name="Elasticsearch.Net" publicKeyToken="96c599bbe3e70f5d" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />

答案 1 :(得分:0)

当您有两个具有不同版本的Elasticsearch.Net依赖项时,通常会发生此错误。就我而言,这是因为我将Serilog.Sinks.ElasticSearch包导入了一个已经有Elasticsearch.NetNEST包的项目中。由于Serilog.Sinks.ElasticSearchNEST软件包具有Elasticsearch.Net作为依存关系,因此它们必须具有相同的版本。我更新了Elasticsearch.NetNEST软件包来解决此问题。

这是之前的.csproj配置:

<PackageReference Include="Serilog.Formatting.Elasticsearch" Version="8.2.0" />
<PackageReference Include="NEST" Version="7.0.1" />
<PackageReference Include="Elasticsearch.Net" Version="7.0.1" />

这是解决方案:

<PackageReference Include="Serilog.Formatting.Elasticsearch" Version="8.2.0" />
<PackageReference Include="NEST" Version="7.9.0" />
<PackageReference Include="Elasticsearch.Net" Version="7.9.0" />    

检查NuGet参考以获取有关导入的软件包依赖项的信息很重要:https://www.nuget.org/packages/Nesthttps://www.nuget.org/packages/Serilog.Sinks.ElasticSearchhttps://www.nuget.org/packages/Elasticsearch.Net