未能加载文件或程序集“sapnco”或它的某一个依赖项

未能加载文件或程序集“sapnco”或它的某一个依赖项。试图加载格式不正确的程序。

前置条件

  1. 某个VS项目需要对接SAP
  2. 引用了"sapnco.DLL" + "sapnco_utils.dll" 64位版本
  3. 在VS2015编译后运行就提示了错误

错误详情

“/”应用程序中的服务器错误。
未能加载文件或程序集“sapnco”或它的某一个依赖项。试图加载格式不正确的程序。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.BadImageFormatException: 未能加载文件或程序集“sapnco”或它的某一个依赖项。试图加载格式不正确的程序。

源错误:

执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

程序集加载跟踪: 下列信息有助于确定程序集“sapnco”未能加载的原因。


=== 预绑定状态信息 ===
日志: DisplayName = sapnco
 (Partial)
警告: 为程序集提供了部分绑定信息:
警告: 程序集名称: sapnco | 域 ID: 2
警告: 当仅提供程序集显示名称的一部分时,将发生部分绑定。
警告: 这可能导致联编程序加载错误的程序集。
警告: 建议为程序集提供完全指定的文字标识,
警告: 并由简单名称、版本、区域性和公钥标记组成。
警告: 有关此问题的详细信息和常见解决方案,请参见白皮书  http://go.microsoft.com/fwlink/?LinkId=109270 。
调用程序集: (Unknown)。
===
日志: 此绑定从 default 加载上下文开始。
日志: 使用主机配置文件: D:\UserProfile\Documents\IISExpress\config\aspnet.config
日志: 使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 的计算机配置文件。
日志: 此时没有为引用应用策略(私有、自定义、分部或基于位置的程序集绑定)。
日志: 尝试下载新的 URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/c61b4375/7866de00/sapnco.DLL。
日志: 尝试下载新的 URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/c61b4375/7866de00/sapnco/sapnco.DLL。
错误: 未能完成程序集的安装(hr = 0x8007000b)。探测终止。

堆栈跟踪:


[BadImageFormatException: 未能加载文件或程序集“sapnco”或它的某一个依赖项。试图加载格式不正确的程序。]
   System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0

[ConfigurationErrorsException: 未能加载文件或程序集“sapnco”或它的某一个依赖项。试图加载格式不正确的程序。]
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +721

[HttpException (0x80004005): 未能加载文件或程序集“sapnco”或它的某一个依赖项。试图加载格式不正确的程序。]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +660

解决方案4 - 引用的DLL版本和项目生成的"目标平台"不一致

  1. 再打开项目的"属性"配置页面
  2. 点击"生成" - 检查"目标平台" 是否为 Any CPU 或者 x64

解决方案3 - 引用的DLL版本和VS活动解决方案平台不一致

  1. 引用的DLL是64位版本
  2. 检查VS的活动解决方案平台是否为 Any CPU 或者 x64

解决方案2 - 安装 Microsoft C Runtime Library 运行时环境类库

  1. Download Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package MFC Security Update from Official Microsoft Download Center
  2. 假如安装后还是不行,再换别的解决方案。

解决方案1 - 引用的DLL版本和IIS Express运行时版本不一致时

  1. 右键sapnco.dll - 属性 - 详细信息
  2. 再打开"Windows 任务管理器" - 确定"IIS Express"运行的是否为64位版
  3. VS - 工具 - 选项 - 搜索"IIS" -
  4. 点击"项目和解决方案" - Web项目
  5. 勾上√ "对网站和项目使用 IIS Express 的64位版"

相关资料

如何下载最新的sapnco.dll版本?

  1. 连接到 SAP 系统 - Azure Logic Apps | Microsoft Docs

    • 请确保安装最新版本,使用 .NET Framework 4.0 编译的 Microsoft .NET 3.0.22.0 的 SAP 连接器 (NCo 3.0) - Windows 64 位 (x64)。
    • 必须安装 64 位版本的 SAP 客户端库,因为数据网关仅在 64 位系统上运行。 安装不受支持的 32 位版本会导致“错误的映像”错误。
    • [错误详细信息:“无法加载文件或程序集 'sapnco, Version=3.0.0.42, Culture=neutral, PublicKeyToken 50436dca5c7f7d23' 或某个依赖项。系统找不到指定文件。”]( https://docs.microsoft.com/zh-cn/azure/logic-apps/logic-apps-using-sap-connector#:~:text=请求”。- ,%E9%94%99%E8%AF%AF%E8%AF%A6%E7%BB%86%E4%BF%A1%E6%81%AF,-%EF%BC%9A%E2%80%9C%E6%97%A0%E6%B3%95)
  2. SAP Connector for Microsoft .NET

  3. 2560042 - sapnco.dll and sapnco_utils.dll files missing after NCo installation | SAP Knowledge Base Article

    After downloading the SAP .Net Connector 3.0 from the SAP Marketplace and installing it, it is not possible to find the sapnco.dll and sapnco_utils.dll libraries.

posted @ 2021-07-10 20:41  Asion Tang  阅读(3574)  评论(2)    收藏  举报