パソコン関連の書籍等を読んで試したりしながらアウトプットしまくります。

アウトプットしながら学ぶ

Visual Studio Commynity ツール

.netでバージョンの違うdllの参照はできない。

投稿日:

未だに、Visual Studio 2002で開発しています。
業務システムなので、Windows XPの頃から開発が始まり、WIndows7までは.net 1.0がギリギリ動作したので、
こんなことになっています。
現在は、Windows10の顧客も増え、WindowsXpはほとんど残っていませんが、Windows7は、まだまだたくさんあります。
Visual Studio 2002(.net 1.0)で開発したプログラムを、Visual Studio 2019で開いて、.net4.6に自動変換すれば、ほとんど問題なく動きます。
ただ、業務システムなのでRS232C通信で外部の機器を制御しています。
これが、一番の問題です。
.net 1.0には、SerialPortクラスがありません。
そのため、MSCommコントロールを使っています。
Windows7に.net4.6をインストールすればよいのですが、数百台の業務システムが日本全国で24時間営業で動作しているので、困難です。
現在は、この部分を一箇所に集めて、コードを切り替えることができるようにして対処しています。

スポンサーリンク




また、RS232Cを使う案件が入ってきたので、なんとかして、コードを共通化できないかと考えました。
Visual Studio 2002を使っている開発環境(Windows XP)にVisual Studio2008がインストールしてあったので、
Visual Studio2008(.net3.5)で作成したdllを、net1.0と.net4.6の両方から参照できれば問題が解決すると思ったのですが、
ダメでした。

作成したdllを参照に追加しようとするとエラーが発生します。

###への参照を追加できませんでした。 これは有効なアセンブリまたは COM コンポーネントではありません。拡張子 ‘dll’ を持つアセンブリまたは COM コンポーネントのみを参照することができます。ファイルがアクセス可能で、有効なアセンブリまたは COM コンポーネントであることを確認してください。

.NET Framework には「同一プロセスに別バージョンのCLRをロードできない」という制限があるようです。







-Visual Studio Commynity, ツール

Copyright© アウトプットしながら学ぶ , 2020 AllRights Reserved Powered by AFFINGER4.