加载与引用.NET DLL相同的文件夹中的引用的.NET DLL时出现“未找到”异常

乔恩

我有一个带有多个可见COM类的.NET DLL SigToolNet.DLL。它为本机C ++静态库FTDIVCPLIB引用了.NET DLL FTDIVcpLibNet.DLL包装器,该库又引用了第三方本机DLL ftd2xx.dll。SigToolNet.DLL已成功注册到32位regasm

C:\Release> regasm SigToolNet.dll /codebase
RegAsm : warning RA0000 : Registering an unsigned assembly with /codebase can cause your assembly to interfere with other applications that may be installed on the same computer. The /codebase switch is intended to be used only with signed assemblies. Please give your assembly a strong name and re-register it.
Types registered successfully

旁注,由于SigToolNet.dll是经过代码签名的,因此我不知道为什么会发出此警告。在安装了VS2019的开发系统上运行时,引用SigToolNet.DLL中COM可见类的应用程序TestHarness.exe成功运行。但是,当SigToolNet.DLL安装在另一台计算机上时,在运行时出现异常,在该时刻调用了对COM可见方法之一(DetectDevice)的第二次调用

Command DetectDevice failed
Error code: -2147024770
Desc: Could not load file or assembly 'FTDIVcpLibNet.dll' or one of its dependencies. The specified module could not be found.

包括FTDIVcpLibNet.dll在内的所有引用DLL都位于SigToolNet.DLL所在的同一文件夹中,该文件夹也是其注册地。

我尝试在3台不同的计算机上运行,​​但在Windows 7和Windows 10上均出现相同的失败结果。成功运行的开发系统正在运行Windows 10。

我还尝试使用Assembly Binding Log Viewer(fuslogvw.exe)跟踪程序集加载失败。

*** Assembly Binder Log Entry  (6/26/2020 @ 4:00:00 PM) ***

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\Vendor Testing Harness\Epic 2018 And Beyond\EpicESigTestHarness.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: DisplayName = SigToolNet, Version=2020.0.0.3, Culture=neutral, PublicKeyToken=null
 (Fully-specified)
LOG: Appbase = file:///C:/Vendor Testing Harness/Epic 2018 And Beyond/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = EpicESigTestHarness.exe
Calling assembly : (Unknown).
===
LOG: This bind starts in the default load context.
LOG: Download of the application configuration file was attempted from file:///C:/Vendor Testing Harness/Epic 2018 And Beyond/EpicESigTestHarness.exe.config.
LOG: Configuration file C:\Vendor Testing Harness\Epic 2018 And Beyond\EpicESigTestHarness.exe.config does not exist.
LOG: No application configuration file found.
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Vendor Testing Harness/Epic 2018 And Beyond/SigToolNet.DLL.
LOG: Attempting download of new URL file:///C:/Vendor Testing Harness/Epic 2018 And Beyond/SigToolNet/SigToolNet.DLL.
LOG: Attempting download of new URL file:///C:/Vendor Testing Harness/Epic 2018 And Beyond/SigToolNet.EXE.
LOG: Attempting download of new URL file:///C:/Vendor Testing Harness/Epic 2018 And Beyond/SigToolNet/SigToolNet.EXE.
LOG: All probing URLs attempted and failed.

我发现此日志令人困惑。它说无法找到SigToolNet.dll,但似乎在与TestHarness.exe相同的文件夹中寻找它。它应该在C:\ Release中寻找它,这是SigToolNet.dll成功注册的地方。此外,报告的异常不是不是找不到SigToolNet.dll,而是不是找不到FTDIVcpLibNet.dll。它看起来的第一个位置不应该与SigToolNet.dll的注册文件夹相同吗?

我在VS2019中使用了远程调试,并且能够在调用第一个方法Init时在SigToolNet中实现断点和单步执行。但是由于执行调用之前的异常,对DetectDevice的第二次调用的断点永远不会发生。

所有.NET DLL都使用.NET 4.8

我无法确定为什么它可以在开发了SigToolNet.dll并安装了VS2019的系统上成功运行,但不能在其他系统上成功运行。

羊毛

可能您必须为FTDIVCPLIB.dll安装适当版本的C ++ Redistribatable。在装有VS2019的计算机上,您已经拥有它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在完整的 .NET 框架上从 ASP.NET Core 项目中的 NuGet 文件夹引用 DLL

来自分类Dev

从外部文件夹加载asp.net dll

来自分类Dev

.net核心类库dll与文件夹名称相同

来自分类Dev

.net核心类库dll与文件夹名称相同

来自分类Dev

在 .NET 中,何时必须引用外部库也引用的 DLL?

来自分类Dev

与DLL相关的DLL的bin文件夹错误与asp.net中的obj文件夹有关

来自分类Dev

如何在ASP.net vNext中的其他文件夹中引用项目

来自分类Dev

在.NET Core项目中引用外部DLL

来自分类Dev

引用ASP.NET Core项目中的.NET 3.5 DLL

来自分类Dev

如何映射位于 dll 引用中的文件?ASP.NET Azure 网站

来自分类Dev

VB.NET自动在特定文件夹中包含DLL

来自分类Dev

DinkToPdf Net Core无法加载DLL文件

来自分类Dev

在asp.net MVC中上传大文件时,出现HTTP错误404.13-未找到

来自分类Dev

加载任何版本的静态引用的.NET程序集

来自分类Dev

从.NET 4.5.1应用程序(EXE)引用.NET 3.5 DLL使用.NET 4.5.1对象

来自分类Dev

无法添加项目 .net core 2 引用但可以添加 dll .net core 2 引用

来自分类Dev

如果 .Net Core 可以在 Windows 上运行,为什么不能在 .Net Framework 中引用 .Net Core DLL?

来自分类Dev

在.Net应用程序中调用C ++ Dll时出现System.Access违规异常

来自分类Dev

在AppData文件夹中加载表单时的相对引用

来自分类Dev

如何在ASP.Net Webapp中引用的项目DLL中初始化AutoMapper配置文件

来自分类Dev

所有.NET引用的dll都集成到项目的dll中

来自分类Dev

Visual Studio-在bin文件夹中自动创建dll的引用

来自分类Dev

在Visual Studio 2012中添加C ++ dll-没有引用文件夹

来自分类Dev

我可以引用.NET可执行文件,就像它是LINQPad 6中的DLL一样吗?

来自分类Dev

动态加载包装C ++ DLL的.NET DLL

来自分类Dev

ASP.NET MVC 5-引用与bin文件夹?

来自分类Dev

ASP.NET MVC C# - 如何在 Views 文件夹外引用函数

来自分类Dev

.Net Core 获取文件夹中所有引用的包

来自分类Dev

SQLite.net Extensions多次加载相同的实体,而不是返回相同的引用

Related 相关文章

  1. 1

    在完整的 .NET 框架上从 ASP.NET Core 项目中的 NuGet 文件夹引用 DLL

  2. 2

    从外部文件夹加载asp.net dll

  3. 3

    .net核心类库dll与文件夹名称相同

  4. 4

    .net核心类库dll与文件夹名称相同

  5. 5

    在 .NET 中,何时必须引用外部库也引用的 DLL?

  6. 6

    与DLL相关的DLL的bin文件夹错误与asp.net中的obj文件夹有关

  7. 7

    如何在ASP.net vNext中的其他文件夹中引用项目

  8. 8

    在.NET Core项目中引用外部DLL

  9. 9

    引用ASP.NET Core项目中的.NET 3.5 DLL

  10. 10

    如何映射位于 dll 引用中的文件?ASP.NET Azure 网站

  11. 11

    VB.NET自动在特定文件夹中包含DLL

  12. 12

    DinkToPdf Net Core无法加载DLL文件

  13. 13

    在asp.net MVC中上传大文件时,出现HTTP错误404.13-未找到

  14. 14

    加载任何版本的静态引用的.NET程序集

  15. 15

    从.NET 4.5.1应用程序(EXE)引用.NET 3.5 DLL使用.NET 4.5.1对象

  16. 16

    无法添加项目 .net core 2 引用但可以添加 dll .net core 2 引用

  17. 17

    如果 .Net Core 可以在 Windows 上运行,为什么不能在 .Net Framework 中引用 .Net Core DLL?

  18. 18

    在.Net应用程序中调用C ++ Dll时出现System.Access违规异常

  19. 19

    在AppData文件夹中加载表单时的相对引用

  20. 20

    如何在ASP.Net Webapp中引用的项目DLL中初始化AutoMapper配置文件

  21. 21

    所有.NET引用的dll都集成到项目的dll中

  22. 22

    Visual Studio-在bin文件夹中自动创建dll的引用

  23. 23

    在Visual Studio 2012中添加C ++ dll-没有引用文件夹

  24. 24

    我可以引用.NET可执行文件,就像它是LINQPad 6中的DLL一样吗?

  25. 25

    动态加载包装C ++ DLL的.NET DLL

  26. 26

    ASP.NET MVC 5-引用与bin文件夹?

  27. 27

    ASP.NET MVC C# - 如何在 Views 文件夹外引用函数

  28. 28

    .Net Core 获取文件夹中所有引用的包

  29. 29

    SQLite.net Extensions多次加载相同的实体,而不是返回相同的引用

热门标签

归档