好的,这个问题更多的是关于理解问题是什么,因为我认为任何人都无法告诉我如何解决问题.
我正在写一个.net 4应用程序,我有一个我要引用的第三方DLL(hasp加密狗保护).
Visual Studio允许我创建引用,并在我的代码中使用dll中包含的类.
第一个问题发生在程序运行并且实际加载了dll时.然后我得到以下错误.
System.BadImageFormatException:无法加载文件或程序集"hasp_net_windows.dll"或其依赖项之一.不是有效的Win32应用程序
此网络链接说明如何修复此错误.Coud有人透露了问题是什么以及为什么我会得到它.
按照这个建议后,我将主项目构建设置为x86然后我得到另一个错误替换另一个.新错误是:
System.IO.FileLoadException:混合模式程序集是针对运行时的版本"v1.1.4322"构建的,如果没有其他配置信息,则无法在4.0运行时加载
这个weblink说明了如何修复错误,但是我的项目中没有app.config,并且想要尽可能避免使用app.config.如果有人能够再解释一下这个问题会有什么帮助呢?
如果您需要更多信息,请告诉我.
问题在于您的应用程序的"位置".一旦选择(32位或64位),该进程中的所有 DLL都必须相同.这个异常告诉我你的一个DLL是错误的"位数".
您根本无法在给定进程中拥有具有不同编译目标的DLL,进程具有"位数"亲和力.
如果这是第三方非托管DLL,则很可能是32位编译.
将构建输出设置为x86用于根项目(创建exe的项目)应该足够,因为这将决定创建的进程.任何其他.NET项目都可以简单地为任何CPU,并且适合32位或64位运行时.
不幸的是,对于您的第二个问题,提供的链接是解决它的方法.在项目中使用app.config没有任何问题,你没有说明为什么你不想要一个.