在Designer中加载非托管DLL以加载包装的控件

时间:2012-08-15 17:18:02

标签: c# dll unmanaged windows-forms-designer

有没有办法在visual studio的设计时加载非托管dll?

我知道我总是可以将DLL放在" System32"文件夹或将Dll路径添加到" PATH"变量直接加载它。但我不想这样做。我想从Application的ExecutablePath加载它。 DLL实际上拥有一个控件。

任何人都可以帮我解决这个问题吗?


谢谢, WritZ

1 个答案:

答案 0 :(得分:0)

  

我想从Application的ExecutablePath加载它

那是行不通的,还没有。除了Windows之外,设计师保证在您从源代码管理中办理登机手续或清理项目时失败。

此代码在Visual Studio的上下文中运行,因此Windows DLL搜索规则基于其安装位置。目前尚不清楚这是否是pinvoke代码失败或者你的程序集是否隐含依赖于DLL。您可以对pinvoke执行某些操作,可以通过测试DesignMode属性来阻止代码运行。处理隐式依赖的唯一方法是帮助Windows找到DLL。搜索路径上的目录。前进的唯一方法是将代码拆分为仅在设计模式下真正重要的部分,以便DesignMode再次变得有用。