如何在VS 2012中添加64位Visio绘图控件?

时间:2013-05-09 16:30:52

标签: wpf visual-studio-2012 64-bit visio

我们在应用程序中使用嵌入式Visio绘图控件作为自动可视化工具来表示系统层次结构。代码隐藏使用Visio互操作来创建和布局所有形状。带有嵌入式Visio文档的“设计器”部分是通过在WindowsFormsHost控件中使用(ActiveX)Visio绘图控件的自定义控件完成的。

到目前为止,这种方法已经运作了好几年。我们首先在VS2008 / Visio 2007中实现,然后迁移到VS2010,然后迁移到Visio 2010.一旦我们迁移到VS2010 / O2010,我们添加了另一个针对x64的构建。

为此,我不得不重建ActiveX控件。由于VS设计器不支持64位版本的Visio Drawing控件,因此您不能简单地创建一个WindowsFormsHost并将Visio Drawing控件放到其上;必须以与32位版本不同的方式构建WPF控件。我不记得完全我是怎么做到的,但我认为基本上是这样的(可能基于this):

  1. 在安装了32位Visio的构建环境中创建WPF表单
  2. 将Visio绘图控件从工具箱拖放到WindowsFormsHost内的表单中。执行此步骤会导致VS创建(并添加引用)新的DLL,类型为AxMicrosoft.Office.Interop.VisOcx的“Microsoft Visio 15.0绘图控件类型库”。此DLL放在项目下的/ obj / Release目录中。
  3. 构建项目以为最终的x86解决方案构建创建WPF控件DLL
  4. 对于32位解决方案,请复制&引用 {your control} .dll AxMicrosoft.Office.Interop.VisOcx.dll。
  5. 保存,复制/移动&在安装了64位Visio的构建环境中打开此控件项目
  6. 将构建目标更改为x64
  7. 构建项目以为最终的x64解决方案构建创建WPF控件DLL
  8. 复制& reference / bin / Release / {custom control} .dll和/obj/Release/AxMicrosoft.Office.Interop.VisOcx.dll。
  9. 我可以为32位版本构建,但这不适用于64位Visio 2013。有任何线索如何完成这项工作?

1 个答案:

答案 0 :(得分:1)

我终于让我们的解决方案使用64位工作。

神奇的是我意识到我实际上并不需要XAML中的控件;所以我最终做的是从XAML页面中删除控件,并从.xaml.cs代码的构造函数中实例化它。

所以:按照this link中的说明构建自定义控件。我认为你必须使用64位版本的MSBuild.exe进行构建,如the link you provided中所述。显然只有在创建自定义控件时才需要这样做;我能够直接从VS构建解决方案(但它也可以在MSBuild构建时正常工作,因此它也适用于自动构建)。

创建自定义控件

  1. 在安装了32位Visio的构建环境中创建名为VisioAxControl的新自定义控件项目
  2. 在VS Designer中,将Visio绘图控件从工具箱拖放到WindowsFormsHost内的窗体中。您可能需要将此控件添加到工具箱中(右键单击工具箱,"选择项目...")。执行此步骤会导致VS创建(并添加引用)新的DLL," Microsoft Visio 15.0绘图控件类型库" AxMicrosoft.Office.Interop.VisOcx类型。此DLL放在项目下的/ obj / Release目录中,但是如果您只是选择引用并设置" Copy local"则会在构建时复制到/ bin。 to" true"。
  3. 打开代码隐藏并将控件的范围更改为public并重构:将其从axDrawingControl1重命名为AxVisioControl(最重要的是,不要忘记{{} 1}})
  4. 构建项目以为最终的x86 / 32位解决方案构建
  5. 创建WPF控制DLL
  6. 对于x86 / 32位解决方案,请复制&将this.AxVisioControl.Name = "AxVisioControl";VisioAxControl.dll引用到解决方案中的某个文件夹中。

    构建64位控件

  7. 在安装了64位Visio的构建环境中保存,复制/移动和打开自定义控件项目

  8. 将构建平台更改为x64
  9. 打开管理员命令提示符,cd到您的项目目录
  10. 运行AxMicrosoft.Office.Interop.VisOcx.dll(对我来说,MSBuild_Path是C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ MSBuild.exe)来构建自定义控件项目以创建WPF控件DLL以供在最终的x64解决方案构建
  11. 包含在您的64位项目中

    1. 复制&参考MSBuild_Path\MSBuild.exe /p:Configuration=Release /p:Platform=x64 your_project_file_name/bin/Release/VisioAxControl.dll
    2. 在表单的XAML中,添加/obj/Release/AxMicrosoft.Office.Interop.VisOcx.dll控件。
    3. 在XAML的代码隐藏中,在构造函数中:

      <WindowsFormsHost name="MyWindowsFormsHost"></WindowsFormsHost>
    4. 保存&amp;建立你的项目!