我有一个使用第三方C ++ DLL的Visual Studio C#项目。到目前为止,这些DLL中只有3个,所以它并没有让我把它们放在项目的根文件夹中,并具有以下属性:
Build Action: None
Copy to Output Directory: Copy Always
这导致DLL被复制到项目的/bin
文件夹,并且一切正常 - 它们不会出现在已发布项目的根文件夹中。我引用这些第三方DLL:
public class MyDLL
{
[DllImport("My_DLL.dll",
EntryPoint = "?Unit@@YA?AUOutput@@UInput@@@Z",
CallingConvention = CallingConvention.Cdecl)]
public static extern MyDLLOutput Unit(MyDLLInput UnitInput);
}
最近我收到了几十个额外的DLL。我没有直接在我的应用程序中引用这些 - 这些DLL由我使用DllImport()
引用的3个DLL中的一个使用。
将所有这些支持DLL放在项目的根文件夹中现在成为我的问题,因为它使项目变得混乱。我已经尝试将它们放在文件夹结构中,例如:
/ExternalDLLs/DLL1/dll1.dll
/ExternalDLLs/DLL1/SupportDlls/1.dll
...
/ExternalDLLs/DLL1/SupportDlls/24.dll
/ExternalDLLs/DLL2/dll2.dll
/ExternalDLLs/DLL3/dll3.dll
这导致已发布的文件夹结构:
/bin/ExternalDLLs/DLL1/dll1.dll
/bin/ExternalDLLs/DLL1/SupportDlls/1.dll
...
/bin/ExternalDLLs/DLL1/SupportDlls/24.dll
/bin/ExternalDLLs/DLL2/dll2.dll
/bin/ExternalDLLs/DLL3/dll3.dll
发布的文件夹结构不适用于我的DllImport()
声明。我认为这是因为DllImport()
期望这些直接位于/bin/
之下。
如果需要,我不介意/bin/
下面的文件夹结构。我也不介意是否每个DLL都被复制到/bin/
而没有任何文件夹结构 - 尽管我似乎无法找到如何做到这一点,因为文件夹结构也被复制到/bin/
。 / p>
有人能指出我最好的方法来克服这个问题吗?我没有看到DllImport()
的属性来指定路径。我确信这是一项简单的任务,但我以前从未这样做过。希望我能够很好地解释这个问题!
THX。