首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在VS 2012中添加64位Visio绘图控件?

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

Stack Overflow用户
提问于 2013-05-09 16:30:52
回答 1查看 3.3K关注 0票数 1

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

这种方法多年来一直行之有效,到目前为止。我们首先在in 2008/ Visio 2007中实现,然后迁移到VS2010,然后迁移到Visio 2010。一旦我们转移到we 2010/O 2010,我们增加了另一个针对x64的构建。

为此,我必须重新构建ActiveX控件。因为VS designer不支持Visio绘图控件的64位版本,所以不能简单地创建一个WindowsFormsHost并将Visio绘图控件放到它上;WPF控件的构建方式必须不同于32位版本。我不记得我是怎么做到的,但我认为基本上是这样的(可能是基于):

  1. 在安装了32位Visio的生成环境中创建WPF窗体。
  2. 将Visio绘图控件从工具箱拖放到WindowsFormsHost中的窗体中。执行此步骤将使VS创建(并添加对) AxMicrosoft.Office.Interop.VisOcx类型的新DLL“MicrosoftVisio15.0绘图控制类型库”。这个DLL被放入项目下的/obj/Release目录中。
  3. 生成用于最终x86解决方案生成的WPF控件DLL的项目。
  4. 对于32位解决方案,请同时复制和引用{您的控件}.dll和AxMicrosoft.Office.Interop.VisOcx.dll.
  5. 在安装了64位Visio的构建环境中保存、复制/移动和打开此控件项目。
  6. 将构建目标更改为x64
  7. 生成用于最终x64解决方案生成的WPF控件DLL的项目。
  8. 复制和引用/bin/Release/{自定义控制}.dll和.dll

我可以为32位版本构建,但这不适用于Visio 2013 64位版本。知道该怎么做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-10 16:39:06

我终于找到了使用64位的解决方案。

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

因此:按照此链接中的说明构建自定义控件。我认为您必须使用64位版本的MSBuild.exe进行构建,就像你提供的链接中提到的那样。显然,只有在创建自定义控件时才需要这样做;我能够直接从VS构建解决方案(但在MSBuild构建时,它也正常工作,因此它也适用于自动构建)。

创建自定义控件

  1. 在安装了32位Visio的构建环境中创建名为VisioAxControl的新自定义控件项目。
  2. 在VS设计器中,将Visio绘图控件从工具箱拖放到WindowsFormsHost中的窗体中。您可能需要将此控件添加到工具箱中(右击“工具箱”,“选择项.”)。执行此步骤将使VS创建(并添加对) AxMicrosoft.Office.Interop.VisOcx类型的新DLL“MicrosoftVisio15.0绘图控制类型库”。该DLL被放入项目下的/obj/Release目录中,但如果您只选择引用并将“复制本地”设置为"true“,则在构建时将复制到/bin。
  3. 打开代码隐藏,将控件的作用域更改为public和refactor:将其从axDrawingControl1重命名为AxVisioControl (最重要的是,不要忘记this.AxVisioControl.Name = "AxVisioControl";)
  4. 为最终的x86/32位解决方案构建创建WPF控件DLL的项目。
  5. 对于x86/32位解决方案,请将VisioAxControl.dllAxMicrosoft.Office.Interop.VisOcx.dll复制并引用到解决方案的某个文件夹中。 构建64位控件
  6. 在安装了64位Visio的构建环境中保存、复制/移动并打开自定义控件项目。
  7. 将构建平台更改为x64
  8. 打开管理员命令提示符,cd到项目目录。
  9. 运行C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe) (对我来说,MSBuild_Path是用于构建自定义控件项目的MSBuild_Path,以创建用于最终x64解决方案生成的WPF控件DLL )。

包括你的64位项目

  1. 复制和参考/bin/Release/VisioAxControl.dll/obj/Release/AxMicrosoft.Office.Interop.VisOcx.dll
  2. 在窗体的XAML中,添加一个<WindowsFormsHost name="MyWindowsFormsHost"></WindowsFormsHost>控件。
  3. 在XAML的代码隐藏中,在构造函数中: 使用VisioAxControl;public DesignView() { InitializeComponent();var avc =新的VisioAxControl() { Name = "vControl“};this.MyWindowsFormsHost.Child = avc;this._avc = avc.AxVisioControl;//以供以后参考,例如添加形状}
  4. 保存和建立您的项目!
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16466613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档