【发布时间】:2014-02-18 16:28:35
【问题描述】:
是否可以将 win32 .dll 嵌入到 .net 项目中?理想情况下,我不想将 .dll 与 .exe 一起分发。我已经阅读了有关将 AssemblyReslove 用于 .net dll (here) 的信息,但它似乎不适用于我的 .dll(使用 Intel Fortran 编译器创建)。首先,事件“AppDomain.CurrentDomain.AssemblyResolve”永远不会被调用。但是,即使我在使用 .dll 之前强制加载程序集,我也会收到以下错误:
在 mscorlib.dll 中发生了“System.BadImageFormatException”类型的未处理异常。
附加信息:无法加载文件或程序集“从 DLLtest2 加载的 16896 字节,版本 = 1.0.0.0,文化 = 中性,PublicKeyToken = null”或其依赖项之一。试图加载格式不正确的程序。
任何想法我可能做错了什么 - 或者我可以尝试其他方法?
用于装配加载的代码:
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("DLLtest2.Dll1.dll"))
{
byte[] assemblyData = new byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
Assembly.Load(assemblyData);
}
谢谢!
【问题讨论】:
-
Assembly.Load仅加载 .Net 程序集。如果它不是 .Net 程序集,则不会加载它 -
谢谢谢尔盖,我担心可能是这样!知道如何/是否可以使用不同的技术加载非 .net 程序集?
标签: .net dll fortran embed .net-assembly