我们现有的API包含我们产品附带的UI控件(WinForms和WPF)dll。它被我们的客户使用了32位。
最近,我们的客户转向64位版本,我们正在尝试为64位版本的开发人员提供支持,因为Visual Studio是32位进程,而我们的控件dll具有本机64位dll的依赖性。我们的控件无法在工具箱/设计器中加载/显示。
为了解决这个问题。我将控件dll的输出类型更改为AnyCPU,还包含对较低本机dll的任何引用,以防止在将控件拖动到设计器或加载现有窗体/窗口时出现异常。 实际上,它解决了将控件拖到设计器/加载现有窗体/窗口的问题。但那是因为我已经从以前的32位版本中加载了工具箱中的控件。
我们在将控件加载到工具箱时仍然存在问题(工具箱 - >选择项目) 在VS2010中 - 根本无法添加,失败的原因是较低的原生dll无法加载。 在VS2012中 - 可以加载Winforms控件(有时仅在第二次之后), WPF控制根本无法加载。
有没有人理解Visual Studio的加载DLL机制? 还有其他建议/解决方法吗?
答案 0 :(得分:0)
不幸的是,在将.Net DLL添加到工具箱时,VS似乎会尝试加载任何引用的DLL,包括C ++,即使我们永远不会在设计器运行时请求更低的DLL资源,
我们使用的解决方法 - 提供我们的控件框架的32位dll版本,即.Net dlls引用的版本。 打开一个项目,添加对应用程序的64位版本的引用。 打开工具箱,添加dll,现在参考32位版本。