

IJCAD2021 Proが入っている環境でC#.Netアプリ開発をしています。参照は"GcadVbaLib"を使っています。  
そこでリリースビルドしたアプリを別のPC（IJCAD2020
Std）環境で実行すると、IJCADを動かすところで「クラスが登録されていない」エラーになってしまいます。これは上位バージョンで作ったことが原因と考えられるでしょうか？AutoCadを使っていた時もバージョン違いによるエラーはよくあった記憶があります。


CC BY-SA 4.0
2021-07-05T21:37:00.807
77998
2021-07-06T00:50:05.897
2021-07-06T00:50:05.897
15413
47173
question
c# ijcad
IJCAD のバージョン違いによる参照設定の互換性


IJCADのVBAコンポーネントは前方互換性も後方互換性も保証していません。バージョンを完全に一致させる必要があります。

  * [VBA によるプログラミングの概要 – IJCAD ヘルプセンター](https://support.ijcad.jp/hc/ja/articles/205153293)

> ※ 参照する Object Library は製品のバージョンに合わせたものを有効にしてください。

一応、C#ではリフレクションAPIまたは`dynamic`型を使って、動的ダックタイピングをすることができます。  
これらを活用することで、参照設定を追加することなく、互換性のあるCOMクライアントコードを書くこともできますが、コンパイル時の型チェックやシンボルチェックができず、実行時にすべてのシンボル解決を試みるため、開発効率や実行効率は大幅に低下します。

  * [.NET - COMの機能を使用する – IJCAD ヘルプセンター](https://support.ijcad.jp/hc/ja/articles/115000168981)
  * [dynamic 型の使用 - C# プログラミング ガイド | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/types/using-type-dynamic)

一般論として、世の中にあるほとんどのライブラリは、後方互換性はあるものの前方互換性はない、ということがほとんどです。前方互換性に配慮すると、ライブラリへの新しい機能（新しいクラスやメソッド）の追加が難しくなるからです。つまり、新しいバージョンの動的リンクライブラリを利用することを前提としたアプリケーションは、古いバージョンの動的リンクライブラリがインストールされている環境では正常に動作しません。


CC BY-SA 4.0
2021-07-05T23:26:58.817
78000
2021-07-05T23:26:58.817
15413
77998
answer