0

Autocadアプリケーションを構築するには、C#4.0を使用します。

私のアプリケーションには、2005年用と2010年用の2つのモジュールがあります。それはautocadの特別なdllを使用しますが、それを仕上げるのにいくつかの困難に直面します。dllは同じ名前であるため、すべてがユニバーサルである必要があります。アプリがautocadのバージョンを変えることは不可能でした。 reference.help私が異なるモジュールに異なるdllを使用するのを手伝ってください。

  1. アプリケーションには2つのモジュールがあります(2005、2010)
  2. 特別なdll
  3. 2005と2010のdllは同じ名前です。
  4. アプリケーションがdllを区別できない
  5. 1つのアプリケーションで異なる同じ名前のdllを使用するのを手伝ってください。

注:個々のプロジェクトでは、それらは完全に機能します。

1つのアプリケーションで同じ名前のdllを使用するためのヘルプが必要です。

ご不明な点がございましたら、お問い合わせください。よろしくお願いいたします。

4

1 に答える 1

0

私も同様のアプリケーションを使用しています。2006年から2013年までのAutoCAD(x86とx64の両方)およびbricscadv12-v13で動作します。

それを解決するために、アーキテクチャごとにVisual Studioプロジェクトを実行しました。これらのプロジェクトはそれぞれ、AutoCADのバージョンに応じて異なる.dllを参照します。特に、これらのプロジェクトのそれぞれが参照AcDbMgd.dll, AcMgd.dll, Autodesk.AutoCAD.Interop and Autodesk.AutoCAD.Interop.Commonし、それらのdllは各AutoCADアーキテクチャに固有です。

参照されているすべてのdllがコピーローカルにあることに注意する必要がありますFALSE!

私の場合、すべてのプロジェクトは異なるフォルダーにコンパイルされますが、プロジェクトごとに異なるアセンブリ名を割り当てる場合は必須ではありません。

AutoCAD APIは2006年から2012年まで同じであるという事実のおかげで(2013年にはいくつかの違いがあります)、ソースコードはそれらのプロジェクトから分離され、各プロジェクトにはリンクされたソースファイルとして含まれます(ソリューションエクスプローラーでプロジェクトに移動します->右クリック->既存のアイテムを追加->ソースファイルを選択し、[リンクとして追加]を押します)。このようにして、すべてのプロジェクトで同じソースコードを使用できますが、それらは異なるautocaddllを含めてコンパイルされます。

私の場合、BricsCADはAutoCADとは異なるAPIを使用することがあるため、いくつかの問題もありました。このいくつかのケースを解決するために、条件付きコンパイルシンボルを設定し、次のように使用しました。

#if BricsCad
                CADAPI.ApplicationServices.Application.SystemVariableChanged += new CADAPI.ApplicationServices.SystemVariableChangedEventHandler(Application_SystemVariableChanged);
#else
                CADDB.LayoutManager.Current.LayoutSwitched += new CADDB.LayoutEventHandler(Current_LayoutSwitched);
#endif

さらに詳しい情報が必要な場合は教えてください。ところで、あなたの主な問題は、AutoCADDLLのローカルコピー=trueだと思います。

于 2012-11-22T15:54:53.953 に答える