【发布时间】:2013-05-09 16:30:52
【问题描述】:
我们在应用程序中使用嵌入式 Visio 绘图控件作为自动可视化工具来表示系统层次结构。代码隐藏使用 Visio 互操作来创建和布置所有形状。带有嵌入式 Visio 文档的“设计器”部分是通过自定义控件完成的,该控件利用 WindowsFormsHost 控件中的 (ActiveX) Visio 绘图控件。
到目前为止,这种方法已经运行了好几年。我们首先在 VS2008/Visio 2007 中实现,然后迁移到 VS2010,然后是 Visio 2010。迁移到 VS2010/O2010 后,我们添加了另一个针对 x64 的构建。
为此,我必须重建 ActiveX 控件。由于 VS 设计器不支持 64 位版本的 Visio 绘图控件,您不能简单地创建一个 WindowsFormsHost 并将 Visio 绘图控件放到它上面; WPF 控件的构建方式必须与 32 位版本不同。我不记得确切我是怎么做到的,但我认为基本上是这样的(可能基于this):
- 在安装了 32 位 Visio 的构建环境中创建 WPF 表单
- 将 Visio 绘图控件从工具箱拖放到 WindowsFormsHost 内的窗体中。执行此步骤会导致 VS 创建(并添加引用)一个新的 DLL,即 AxMicrosoft.Office.Interop.VisOcx 类型的“Microsoft Visio 15.0 绘图控件类型库”。这个DLL放在项目下的/obj/Release目录下。
- 构建项目以创建用于最终 x86 解决方案构建的 WPF 控件 DLL
- 对于您的 32 位解决方案,复制并引用 {您的控件}.dll 和 AxMicrosoft.Office.Interop.VisOcx.dll。
- 在安装了 64 位 Visio 的构建环境中保存、复制/移动和打开此控制项目
- 将构建目标更改为 x64
- 构建项目以创建用于最终 x64 解决方案构建的 WPF 控件 DLL
- 复制和引用 /bin/Release/{自定义控件}.dll 和 /obj/Release/AxMicrosoft.Office.Interop.VisOcx.dll。
我可以构建 32 位版本,但这不适用于 Visio 2013 64 位。任何线索如何完成这项工作?
【问题讨论】:
标签: wpf visual-studio-2012 64-bit visio