2

C#で記述されたVisual Studio 2010を使用して、Microsoft MapPoint用の最小限の(テストであるため、MapPointオブジェクトライブラリなしで)アドインを開発しました。

セットアッププロジェクトを使用すると、MapPoint 2010または2011を実行する一部のPCにアドインをインストールできますが、他の一部のPCではインストールしても効果がありません。

つまり、正常に終了したように見えますが、MapPointを開くと、アドインが実行されていません。[ツール]>[COMアドイン]を開くと、アドインがチェックされていないことがわかります。チェックしても効果がなく、手動で追加するとわかります。

「C:\ Path \ to\myAddin.dll」は有効なOfficeアドインではありません。

いくつかのテストを行ったところ、問題が特定のMapPointバージョン、Windowsバージョン、またはプラットフォームバージョンに関連していないことがわかりました。

アドインが一部のマシンで機能し、他のマシンでは機能しないようにする違いはどれですか?ありがとう!


アドインの作成方法の詳細:

  • MapPoint2011Europeをインストールします
  • VisualStudio2010を起動します
  • ファイル>新規>プロジェクト...>共有アドイン>プロジェクトに名前を付ける>OK>MicrosoftMapPointだけをチェック>最後に進む
  • Soluzionsエクスプローラー>Connect.csを開き、コードを記述します
  • ソリューション内のすべてのプロジェクトをビルドします(MapPointをオフにします)
  • セットアッププロジェクトによって生成された.msiを使用して、ターゲットマシン(MapPointが既にインストールされている)にアドインをインストールします
4

2 に答える 2

1

はい、実行時バインディングの記事を書きましたが、MapPointを使用するのに最適な方法ではないことに同意しますが、使用する必要がある場合もあります。

アドインを作成するときは、MapPointControlにアクセスしないでください。オブジェクトモデルにのみアクセスしています。APIの違いを除けば、2006以降を参照する場合は、それ以降のすべてのバージョンで機能するはずです。つまり。2010で構築されたアドインは2011で動作するはずです。

有効でないオフィスアドインエラーはわかりにくいですが、実際には、これはMapPointと.NETアドインの間にあるシムが原因で発生します。シムを使用すると、.NETDLLがCOMアドインのように見えます。

于 2012-07-13T14:32:58.307 に答える
0

何時間ものテストの後、私はそれを見つけました!MPSuperShapeインストールフォルダ内の調査に感謝します:)。

アドインがインストールされているのと同じフォルダーに、Extensibility.dllが必要です。VSで共有アドインプロジェクトを作成すると、拡張性は自動的に参照に追加されますが、インストーラーがプログラムフォルダーに配置するファイルのリストには追加されません。

したがって、次のことを行う必要があります。自動生成されたセットアッププロジェクトを右クリック>[追加]>[アセンブリ...]>[。NET]>[拡張性]>[OK]。ビルド、インストール、そしてあなたはそれを手に入れました!

さらに、MapPointオブジェクトライブラリを使用する場合(私のようなテストアドインでない場合と同じように)、同様の方法でInterop.MapPoint.dllを追加する必要があります。自動生成されたセットアッププロジェクトを右クリックします>追加>アセンブリ...>参照>メインプロジェクトのbin\Debugまたはobj\DebugフォルダーからそのようなDLLを選択します。

一部のマシンでExtensibility.dllが不要なのはなぜですか?

(私が見たように)Microsoft Office 2007以降を使用している場合は、(でC:\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\PublicAssemblies)すでに存在しており、MapPointを実行すると何らかの方法で読み込まれるためです。

于 2012-07-18T16:07:49.843 に答える