我最近从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)]
答案 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.Net
和NEST
包的项目中。由于Serilog.Sinks.ElasticSearch
和NEST
软件包具有Elasticsearch.Net
作为依存关系,因此它们必须具有相同的版本。我更新了Elasticsearch.Net
和NEST
软件包来解决此问题。
这是之前的.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/Nest,https://www.nuget.org/packages/Serilog.Sinks.ElasticSearch,https://www.nuget.org/packages/Elasticsearch.Net。