0

我正在尝试在我的 Web 应用程序中实现 NHibernate.Search,我完成了配置并将包从 NuGet 加载到应用程序

但是当我运行应用程序时,它会抛出以下错误

无法加载文件或程序集 'Lucene.Net, Version=2.9.2.2, Culture=neutral, PublicKeyToken=null' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

程序集管理器从以下位置加载:C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 在可执行文件 C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0\WebDev.WebServer40.exe 下运行--- 详细的错误日志如下。

=== 预绑定状态信息 === LOG: DisplayName = Lucene.Net, Version=2.9.2.2, Culture=neutral, PublicKeyToken=null (完全指定) LOG: Appbase = file:///D:/SJ /Application/Solution/SJ.Web/ LOG:Initial PrivatePath = D:\SJ\Application\Solution\SJ.Web\bin 调用程序集:NHibernate.Search,版本=2.0.2.4000,Culture=neutral,PublicKeyToken=null。=== LOG:此绑定在默认加载上下文中开始。LOG:使用应用程序配置文件:D:\SJ\Application\Solution\SJ.Web\web.config LOG:使用主机配置文件:LOG:使用来自 C:\Windows\Microsoft.NET\Framework\v4 的机器配置文件。 0.30319\config\machine.config。LOG:此时未将策略应用于引用(私有、自定义、部分或基于位置的程序集绑定)。日志:正在尝试下载新的 URL 文件:///C:/Users/AppData/Local/Temp/Temporary ASP.NET Files/root/33aeca0d/35fb23ff/Lucene.Net.DLL。日志:正在尝试下载新的 URL 文件:///C:/Users/AppData/Local/Temp/Temporary ASP.NET Files/root/33aeca0d/35fb23ff/Lucene.Net/Lucene.Net.DLL。日志:正在尝试下载新的 URL 文件:///D:/SJ/Application/Solution/SJ.Web/bin/Lucene.Net.DLL。警告:比较程序集名称导致不匹配:公钥令牌错误:无法完成程序集设置(hr = 0x80131040)。探测终止。比较程序集名称导致不匹配:公钥令牌错误:无法完成程序集设置(hr = 0x80131040)。探测终止。比较程序集名称导致不匹配:公钥令牌错误:无法完成程序集设置(hr = 0x80131040)。探测终止。

此错误的原因是什么,我该如何解决?

4

1 回答 1

0

我有一些类似的问题。

尝试查看内部packages.config,您应该会看到 Lucene 包和编译时正在寻找的版本。尝试从 Nuget 包管理器中删除该包,然后输入 packages.config 并检查它是否仍指向某个版本。如果是这种情况,请删除此文件中的引用,然后重新安装您要使用的版本。

然后再次来这里检查它是否指向正确的版本。我认为您甚至可以在此处更改版本以指向正确的位置。

我希望这有帮助

谢谢你的回答很有帮助,我已经通过以下方式解决了我的问题,我从我的解决方案中删除了所有 Lucene.Net,我已经从https://nhcontrib.svn.sourceforge.net/svnroot/nhcontrib/trunk下载了 lucene.net /src/NHibernate.Search并手动添加参考,现在它正在工作

于 2014-07-20T10:58:17.480 回答