C# 尝试在C中加载程序集时出错#
好的,这个问题更多的是关于理解问题是什么,因为我认为没有人能够告诉我如何解决问题 我正在编写一个.NET4应用程序,我有一个第三方dll(hasp加密狗保护),我想引用它 VisualStudio允许我在代码中创建引用并使用dll中包含的类 第一个问题发生在程序运行且dll实际加载时。然后我得到以下错误 System.BadImageFormatException:无法加载文件或程序集 “hasp_net_windows.dll”或其依赖项之一。是无效的 Win32应用程序 这说明了如何修复此错误。有人能解释一下问题是什么,为什么我会得到它吗 在遵循这个建议之后,我将主项目构建设置为x86,然后出现另一个错误替换另一个。新的错误是: System.IO.FileLoadException:混合模式程序集是根据 运行时版本“v1.1.4322”,无法在4.0中加载 无附加配置信息的运行时 这说明了如何修复错误,但我的项目中没有app.config,如果可能的话,我希望避免使用app.config。如果有人能再次解释这个问题,那会有帮助吗 如果您需要更多信息,请告诉我 问题在于应用程序的“比特度”。一旦选择(32位或64位)该进程中的所有DLL都需要相同。这个异常告诉我您的DLL之一是错误的“位” 在给定的进程中,不能有具有不同编译目标的DLL,因为一个进程具有“比特”关联性 如果这是第三方非托管DLL,则很可能是32位编译的 将根项目(创建exe的项目)的生成输出设置为x86应该足够了,因为这将指示创建的进程。然后,任何其他.NET项目都可以是任何CPU,并且可以适合32位或64位运行时C# 尝试在C中加载程序集时出错#,c#,.net,dll,C#,.net,Dll,好的,这个问题更多的是关于理解问题是什么,因为我认为没有人能够告诉我如何解决问题 我正在编写一个.NET4应用程序,我有一个第三方dll(hasp加密狗保护),我想引用它 VisualStudio允许我在代码中创建引用并使用dll中包含的类 第一个问题发生在程序运行且dll实际加载时。然后我得到以下错误 System.BadImageFormatException:无法加载文件或程序集 “hasp_net_windows.dll”或其依赖项之一。是无效的 Win32应用程序 这说明了如何修复此错
不幸的是,对于您的第二个问题,提供的链接是解决它的方法。在项目中使用app.config没有什么错,而且您还没有说明为什么不需要app.config。尽管Adam Houldsworth给出了答案,但我想补充一点,在没有app.config的情况下也可以使用app.config。然而,这需要更多的工作和对COM互操作的正确理解。当然,麻烦值不值得由你决定 您可以使用以下方法以编程方式设置
useLegacyV2RuntimeActivationPolicy
关于如何做到这一点的简要说明。但请注意他的警告,这可能会让你在使用这种方法时三思而后行:
这种方法是有效的,但如果在公共场合使用它,我会非常犹豫
面向生产代码,尤其是针对除
初始化您自己的应用程序。而这应该在一个
库,使用它有一个非常糟糕的副作用:更改运行时
以一种非常隐蔽和安全的方式执行应用程序的策略
不明显
我无法使用app.config文件,因为程序集是通过COM从本机程序加载的。
我找到了支持.net framework 4.0的库。在这种情况下,没有其他解决方案适合我。为什么不喜欢app.config?菜单构建、构建配置(不确定,我这里没有VS),那么对于解决方案中的每个项目,您必须以x86模式为目标。由于该dll的限制,您将无法创建64位应用程序。在哪里可以获得.net 4版本的hasp dll?请注意,这是不鼓励的,因此答案应该是搜索解决方案的终点(而不是另一个参考的中途停留,它往往会随着时间的推移而过时)。请考虑在这里添加一个独立的概要,将链接作为参考。