gpt4 book ai didi

c# - 尝试在 C# 中加载程序集时出错

转载 作者:行者123 更新时间:2023-11-30 13:27:42 25 4
gpt4 key购买 nike

好的,这个问题更多的是关于了解问题是什么,因为我认为没有人能够告诉我如何解决问题。

我正在编写一个 .net 4 应用程序,并且我有一个我想引用的第 3 方 dll(hasp dongle 保护)。

Visual Studio 允许我在我的代码中创建引用并使用包含在 dll 中的类。

第一个问题发生在程序运行和实际加载 dll 时。然后我收到以下错误。

System.BadImageFormatException: Could not load file or assembly 'hasp_net_windows.dll' or one of its dependencies. is not a valid Win32 application

weblink 说明如何修复此错误。有人可以解释问题是什么以及为什么我得到它。

遵循此建议后,我将主项目build设置为 x86,然后我得到另一个错误替换另一个。新的错误是:

System.IO.FileLoadException: Mixed mode assembly is built against version 'v1.1.4322' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information

weblink说明了如何修复错误,但我的项目中没有 app.config,并且希望尽可能避免使用。如果有人可以再次解释问题是什么,那会有帮助吗?

如果您需要更多信息,请告诉我。

最佳答案

问题是您的应用程序的“位数”。选择(32 位或 64 位)后,该进程中的所有 DLL 需要相同。这个异常告诉我你的一个 DLL 是错误的“位数”。

在一个给定的进程中,您根本无法拥有具有不同编译目标的 DLL,一个进程具有“位数”亲和性。

如果这是第三方非托管 DLL,则很可能是 32 位编译的。

将根项目(创建 exe 的项目)的构建输出设置为 x86 应该就足够了,因为这将指示创建的进程。任何其他 .NET 项目都可以是任何 CPU,并且适合 32 位或 64 位运行时。

不幸的是,对于您的第二个问题,提供的链接是解决它的方法。在项目中有一个 app.config 并没有错,而且你还没有说明你为什么不想要一个。

关于c# - 尝试在 C# 中加载程序集时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9581057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com