1

システム階層を表す自動化された視覚化ツールとして、アプリケーションに埋め込まれた Visio 描画コントロールを使用しています。コード ビハインドでは、Visio 相互運用機能を使用して、すべての図形を作成およびレイアウトします。Visio ドキュメントが埋め込まれた "デザイナー" 部分は、WindowsFormsHost コントロール内の (ActiveX) Visio Drawing コントロールを使用するカスタム コントロールによって実現されます。

このアプローチは、現在まで数年間うまく機能しています。最初に VS2008/Visio 2007 に実装し、次に VS2010 に移行し、次に Visio 2010 に移行しました。VS2010/O2010 に移行した後、x64 をターゲットとする別のビルドを追加しました。

これを行うには、ActiveX コントロールを再構築する必要がありました。VS デザイナーは 64 ビット バージョンの Visio Drawing コントロールをサポートしていないため、単純に WindowsFormsHost を作成して Visio Drawing コントロールをそこにドロップすることはできません。WPF コントロールは、32 ビット バージョンとは異なる方法で構築する必要があります。どうやってやったか正確には覚えていませんが、基本的にはこれだったと思います(おそらくこれに基づいています):

  1. 32 ビット Visio がインストールされたビルド環境で WPF フォームを作成する
  2. Visio Drawing コントロールをツールボックスから WindowsFormsHost 内のフォームにドラッグ アンド ドロップします。この手順を実行すると、VS は AxMicrosoft.Office.Interop.VisOcx 型の新しい DLL「Microsoft Visio 15.0 Drawing Control Type Library」を作成 (および参照を追加) します。この DLL は、プロジェクトの下の /obj/Release ディレクトリに配置されます。
  3. プロジェクトをビルドして、最終的な x86 ソリューション ビルド用の WPF コントロール DLL を作成します。
  4. 32 ビット ソリューションの場合、{your control} .dllAxMicrosoft.Office.Interop.VisOcx.dll の両方をコピーして参照します。
  5. 64 ビット Visio がインストールされたビルド環境で、このコントロール プロジェクトを保存、コピー/移動、および開く
  6. ビルド ターゲットを x64 に変更します
  7. プロジェクトをビルドして、最終的な x64 ソリューション ビルド用の WPF コントロール DLL を作成します。
  8. /bin/Release/ {custom control} .dll および /obj/Release/AxMicrosoft.Office.Interop.VisOcx.dll をコピーして参照します。

32 ビット バージョン用にビルドできますが、これは Visio 2013 64 ビットでは機能しません。これを行う方法の手がかりはありますか?

4

1 に答える 1

1

最終的に、64 ビットを使用してソリューションを機能させることができました。

魔法のように、実際には XAML のコントロールは必要ないことに気付きました。そのため、XAML ページからコントロールを削除し、.xaml.cs コードのコンストラクターからインスタンス化することになりました。

そのため、このリンクの指示に従って、カスタム コントロールを作成してください。あなたが提供したリンクに記載されているように、MSBuild.exe の 64 ビット バージョンを使用してビルドする必要があると思います。これは明らかに、カスタム コントロールを作成する場合にのみ必要です。VS から直接ソリューションをビルドすることができました (ただし、MSBuild でビルドした場合も正しく機能したため、自動ビルドでも機能します)。

カスタム コントロールの作成

  1. 32 ビット Visio がインストールされたビルド環境で、VisioAxControl という名前の新しいカスタム コントロール プロジェクトを作成します。
  2. VS Designer で、Visio Drawing コントロールをツールボックスから WindowsFormsHost 内のフォームにドラッグ アンド ドロップします。このコントロールをツールボックスに追加する必要がある場合があります (ツールボックスを右クリックし、[項目を選択...])。この手順を実行すると、VS は AxMicrosoft.Office.Interop.VisOcx 型の新しい DLL「Microsoft Visio 15.0 Drawing Control Type Library」を作成 (および参照を追加) します。この DLL はプロジェクトの下の /obj/Release ディレクトリに置かれますが、参照を選択して "Copy local" を "true" に設定すると、ビルド時に /bin にコピーされます。
  3. コード ビハインドを開き、コントロールのスコープを に変更しpublic、リファクタリングします。名前を から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. (私にとって、 MSBuild_PathMSBuild_Path\MSBuild.exe /p:Configuration=Release /p:Platform=x64 your_project_file_nameは C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe です) を実行してカスタム コントロール プロジェクトをビルドし、最終的な x64 ソリューション ビルドで使用する WPF コントロール DLL を作成します。

64 ビット プロジェクトに含める

  1. コピー&参照/bin/Release/VisioAxControl.dll/obj/Release/AxMicrosoft.Office.Interop.VisOcx.dll.
  2. フォームの XAML で、<WindowsFormsHost name="MyWindowsFormsHost"></WindowsFormsHost>コントロールを追加します。
  3. XAML の分離コードでは、コンストラクターで次のようにします。

    using VisioAxControl;
    public DesignView()
    {
        InitializeComponent();
        var avc = new VisioAxControl() { Name = "vControl" };
        this.MyWindowsFormsHost.Child = avc;
        this._avc = avc.AxVisioControl;  // for later reference, such as adding shapes
    }
    
  4. プロジェクトを保存してビルドしましょう!
于 2013-05-10T16:39:06.223 に答える