![]() |
1
3
是的,那是个问题。问题是代码是在visualstudio中执行的,而不是在应用程序中执行的。用于查找依赖程序集的探测路径将仅包括VS的私有目录(Common7\IDE\privatesassemblies和publicsassemblies),而不是项目的生成目录。通过将OCShell.dll复制到其中一个目录中,可以使其找到OCShell.dll,但非托管dll必须放在窗口在查找dll时将搜索的目录中。除了需要清单的Windows并行缓存之外,它仅限于系统路径环境变量上的一个目录。 这些都不是令人愉快的选择。最好的办法是确保这些DLL中的代码不能在设计时执行。您可以使用DesignMode属性来执行此操作,如果为True,则忽略调用。这至少需要在构造函数和加载事件中完成。其他事件也可以运行。也大大降低了由于非托管代码中的错误而导致visualstudio崩溃的可能性。如果这会影响控件的设计时视图,那么您可能需要编写设计器来弥补这一点。 |
![]() |
2
1
我也有同样的问题。如果你有一个DLL,它使用许多其他的DLL,并且可能用C++编写,它通常需要许多其他的依赖关系。在运行时,它们会得到完美的解决,但在设计模式下不会。 使用Hans Passant的答案,您需要将此代码放在与此DLL相关的每个函数调用前面。
我有2个Connect()和2个Disconnect()调用来自我的DLL,在我把它放在每个场合之前,设计器现在可以完美地为UserControl加载布局了。谢谢你的解决方案。 |
![]() |
Pablo De Luca · 保存表单控件值以供以后使用 6 年前 |
![]() |
Foitn · Winforms禁用数据预览 7 年前 |
![]() |
Sach · 将WPF ScrollViewer内容导出为单独的PNG 7 年前 |