未能加载文件或程序集“sapnco”或它的某一个依赖项
目录
未能加载文件或程序集“sapnco”或它的某一个依赖项。试图加载格式不正确的程序。
前置条件
- 某个VS项目需要对接SAP
- 引用了"sapnco.DLL" + "sapnco_utils.dll" 64位版本
- 在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版本和项目生成的"目标平台"不一致
- 再打开项目的"属性"配置页面
- 点击"生成" - 检查"目标平台" 是否为
Any CPU
或者x64
解决方案3 - 引用的DLL版本和VS活动解决方案平台不一致
- 引用的DLL是64位版本
- 检查VS的活动解决方案平台是否为
Any CPU
或者x64
解决方案2 - 安装 Microsoft C Runtime Library 运行时环境类库
- Download Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package MFC Security Update from Official Microsoft Download Center
- 假如安装后还是不行,再换别的解决方案。
解决方案1 - 引用的DLL版本和IIS Express运行时版本不一致时
- 右键
sapnco.dll
- 属性 - 详细信息 - 再打开"Windows 任务管理器" - 确定"IIS Express"运行的是否为64位版
- VS - 工具 - 选项 - 搜索"IIS" -
- 点击"项目和解决方案" - Web项目
- 勾上√ "对网站和项目使用 IIS Express 的64位版"
相关资料
如何下载最新的sapnco.dll
版本?
-
连接到 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' 或某个依赖项。系统找不到指定文件。”
-
SAP Connector for Microsoft .NET
- Compiled with .NET Framework 4.0
SAP Connector for Microsoft .NET 3.0.24.0 for Windows 32bit (x86), May 20, 2021 (ZIP archive, 18,589 KB)
SAP Connector for Microsoft .NET 3.0.24.0 for Windows 64bit (x64), May 20, 2021 (ZIP archive, 11,347 KB) - NCo 3.0 的 .NET 4.0 变体需要 Microsoft C++ Runtime DLL 10.0 版(包含在 Microsoft Visual C++ 2010 Redistributables 中)。您可以从Microsoft 下载页面获取 MSI 安装程序。
- Download Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package MFC Security Update from Official Microsoft Download Center
- Compiled with .NET Framework 4.0
-
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.
作者:Asion Tang
凡是没有注明[转载]的文章,本Blog发表的文章版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。