Inventorのアドインがロードされない。そんな時には

Inventorのアドインマネージャに表示されたアドインのリスト。特定のアドインが自動でロードされていない状態を示す警告が強調表示されている。

Inventorのアドインの開発中にアドインマネージャから「自動でロード」を指定したのにロードが解除されてしまうが、原因が分からない。といった事象に遭遇したことはありませんでしょうか。

今回の記事では、Inventorのアドインがロードされない場合のよくある理由や、調査方法について紹介したいと思います。

 

1.DLLファイルのセキュリティ設定

「他のPC(開発環境等)で動作しているアドインを、別の環境にコピーすると動かなくなった」場合に、まず確認をしていただきたい項目です。

ネットワークを通じて取得したした .dll ファイルは、セキュリティ機能によってロードがブロックされる場合があります。

コピーをしたアドインの*dllファイルを右クリックして [プロパティ] ダイアログの [全般] タブを開き、右下にある 「許可する」 にチェックを入れてください。

InventorAddInCS.dllのプロパティウィンドウ、セキュリティ設定やファイル情報を表示している画面。

2.Activateメソッド処理中のエラー

ご承知の様に、InventorがアドインのDllファイルをロードすると、カスタマイズプログラムのActivate()メソッドが実行されます。

このActivateメソッドの処理中に、何らかの理由でExceptionが発生している場合には、アドインマネージャでロードを行っても、再度アドインマネージャを開くとアドインがロードされていないといった状態となります。

問題点の切り分けとして、以下の様な対応により状況の切り分けを行うことをお勧めいたします。

  • Activate メソッドの最初の行にメッセージボックスを表示する処理を追加て、Activate処理が実行されているか否かを確認する
  • Activateメソッド全体をty~catchで囲みExceptionが発生していないかを確認する。
  • Visual StudioでActivateメソッドの先頭にブレークポイントを置き、デバッグ実行をして確認をする

よくあるケースとしては、過去のプラグインのコードを流用して別のプラグインを作成している場合などに、ControlDefinitions.AddButtonDefinition()メソッドに渡す「コマンド内部名」が重複しているために、Exceptionが発生している。などがあります。

3.利用している3rdパーティ製ライブラリが参照パスにない

上記切り分けの結果、Activate自体が実行されていない場合、アドインのアセンブリのロードが出来ていない可能性が高い状況です。

典型的には、3rdパーティ製のライブラリを利用している場合などに、そのライブラリをロードできずに失敗しているような場合が当てはまります。

Inventor 2025から、プラットフォームが.NET Frameworkから.NET に変更されました。

参考記事:Inventor 2025 カスタムプログラムの.NET 8 への移植

.NET Frameworkには共有アセンブリを配置するグローバル アセンブリ キャッシュ(GAC)という仕組みがありましたが、.NET(.NET 5.0以降)ではGACが廃止されています。このためアドインが参照する3rdパーティ製のライブラリをアドインのアセンブリファイルと同じフォルダに配置するといった対応が必要となります。

なお、Visual Studio 2022 C#では、 Visual Studioのプロジェクトファイル(.csproj )をテキストエディタで開き、<PropertyGroup>タグ配下に以下の設定を追加することで、NuGetパッケージで取得したライブラリをビルド時に出力フォルダにコピーすることが可能となります。

<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>

ここで紹介した内容で、すべての場合に対応できるわけではありませんが、問題の切り分けには役立つかと思います。

参考になりましたら幸いです。

By Takehiro Kato


Comments

Leave a Reply

Discover more from Autodesk Developer Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading