【问题标题】:Adding a project with a dependency v1 to a project with a dependency v1.1将具有依赖项 v1 的项目添加到具有依赖项 v1.1 的项目中
【发布时间】:2012-11-27 14:26:35
【问题描述】:

情况就是这样:我有一个项目 A,它依赖于库版本 1.0.0.0 至关重要的是,此版本将保留在此项目中。对于一些额外的功能,我需要使用库 1.1.0.0,因此我创建了一个具有较新版本的类库项目,并将其作为依赖项添加到我的主项目中。 这工作正常并且很好地遵守,但在运行时我得到一个错误:

System.IO.FileLoadException: Could not load file or assembly 'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
   at OpenXMLReportsGenerator.GenerateInvoiceFailureReportHEOpenXML.CreatePackage(String filePath, DataSet data, String exporterName)
   at bDoxWebEd.Reports.InvoiceFailureReportHandler.BeginGenerateReportAndSave(Object gerateReportStateInfo)

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

将项目编译为调试时,我没有收到此错误,仅在编译 Release 时。 我该如何解决这个问题?

好的,在服务器上激活功能登录后,我的日志中出现以下错误:

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\Windows\SysWOW64\inetsrv\w3wp.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = IIS APPPOOL\bDoxPool
LOG: DisplayName = DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
 (Fully-specified)
LOG: Appbase = file:///D:/***/
LOG: Initial PrivatePath = D:\***\bin
Calling assembly : OpenXMLReportsGenerator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: D:\Program Files\Nipendo\bDox\bDox\web.config
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/bdox/00aaf85b/66058ca1/DocumentFormat.OpenXml.DLL.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/bdox/00aaf85b/66058ca1/DocumentFormat.OpenXml/DocumentFormat.OpenXml.DLL.
LOG: Attempting download of new URL file:///D:/***/bin/DocumentFormat.OpenXml.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Build Number
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

【问题讨论】:

  • 按照消息末尾有关如何启用绑定日志记录的说明进行操作。然后使用 Fuslogvw.exe 检查失败的绑定。
  • 这只发生在生产环境中,所以我无法从 cmd 访问 Fuslogvw.exe。
  • 您可以将 Fuslogvw.exe 复制到生产计算机。如果不能直接使用,请按照hanselman.com/blog/…的说明开启。
  • @Panos Rontogiannis 感谢您的提示,我已经添加了融合的日志记录。
  • 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。

标签: c# asp.net dependencies


【解决方案1】:

显然OpenXMLReportsGenerator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 引用程序集DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 并且程序集加载器无法找到它。

尝试将此程序集添加到 bin 文件夹或 GAC。

【讨论】:

  • @AMember 然后您可能需要将程序集添加到 GAC。您不能使用有关这些程序集的更多详细信息来更新您的问题。指定程序集及其全名(如 DocumentFormat.OpenXml、Version=2.0.5022.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35)及其依赖项(引用的程序集)。同时让我们知道哪些程序集是您自己的,哪些是第三方的。
  • 我已经设法通过更新我所有环境的版本来解决这个问题。感谢您的帮助...
猜你喜欢
  • 2018-02-04
  • 1970-01-01
  • 2014-03-04
  • 2016-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多