我添加了 MyAssembly.dll 作为对我的查询的附加引用,并且效果很好:我可以毫无问题地使用其中的各种类。
MyAssembly.dll 中的一个类的方法之一引用另一个 dll (Wrapper.dll)。Wrapper.dll 使用 [DllImport] 访问 C++ dll (C.dll) 中的功能:
[DllImport("C.dll", CallingConvention = CallingConvention.StdCall, EntryPoint ="CPlusPlusFunction")] internal static extern UInt32 _CPlusPlusFunction([MarshalAs(UnmanagedType.LPWStr)] string file_path);
虽然从引用 MyAssembly.dll(引用 Wrapper.dll,引用 C.dll)的 MyApp.exe 执行此方法时效果很好,但在 LINQPad 中我无法使其工作。
如果我只为 MyAssembly.dll 添加一个引用并尝试运行该方法,我会得到:
DllNotFoundException:无法加载 DLL 'C.dll':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)
如果我只为 Wrapper.dll 添加附加参考,我会得到同样的错误。
如果我为 Wrapper.dll 和 C.dll 添加附加参考,我会得到:
无法打开元数据文件“C.dll”——“试图加载格式不正确的程序。”
如果我只为 C.dll 添加附加参考,我会得到同样的错误。
关于如何让它在 LINQPad 中像在 MyApp.exe 中一样工作的任何想法?