私は非常に複雑なアプリケーションを持っています、このアプリケーションは次のように構成されています:
Main.exe
(スタンドアロンアプリケーションです)
Main.exe
使用Project1.dll
(フォームを含む)
内に含まれるフォームは、を使用しProject1.dll
て別のdll(Project2.dll
)によって拡張されますmono.addins
でMain.exe
私は正しい方法で拡張されたフォームを見ることができます。
また、autocadの内部を介してロードされるautocadコネクタ(たとえばProject3.dll
)を実装しましたnetload
。このコネクタはの形式を使用し、Project1.dll
その形式はautocadでも拡張する必要があります。
その結果、autocad内ではフォームが拡張されていないように見え、コードをデバッグすると次のようになります。
AddinManager.Initialize();
AddinManager.Registry.Update(null);
foreach (IMyPlugin Addin in AddinManager.GetExtensionObjects(typeof(IMyPlugin)))
{
if (Addin.IsPluginLicensed)
EmbedPlugin(Addin);
}
foreachはアドインを生成しません。
これらの.dllはそれぞれ同じディレクトリに保存されていることに注意してください。
問題はautocadexeファイルの別の場所にあると思いますが、いくつかの調整を試みましたが、何も機能しません。
私はもう試した:
- .dllsパスを含む.addinsファイルを作成します。
- すべての.dllのコピーを使用してサブフォルダー\addins\を作成します
AddinManager
与える.dllパスを初期化しますAddinManager.Registry
.dllパスを指定して更新します
コード構造は非常に複雑であるため(多くのファイルとプロジェクトが含まれます)、貼り付けたり、機能するコードを提供したりするのはそれほど簡単ではありません。