

IJCAD2018で.Netを使用して開発しています。

作成したモジュールを「NETLOAD」でロードしますが、アンロードする方法はあるのでしょうか？  
プログラムを修正する毎にCADの再起動が必要となるのでC++の時のようにアンロードができればと考えております。

方法をご存知でしたら教えて頂けないでしょうか。


CC BY-SA 4.0
2018-06-28T01:15:22.140
45108
2018-07-03T11:06:09.377
29095
question
.net ijcad
IJCAD2018の.Netアプリケーションのアンロード方法について


残念ながらCADの再起動以外にはないようですね。

.Net Frameworkの仕組み(仕様？)でAppDomainからアセンブリのアンロードがやれないようなので実装されてないのかなと思います。


CC BY-SA 4.0
2018-06-28T05:27:45.110
45117
2018-06-28T05:27:45.110
29093
45108
answer


AutoCADでもNETLOADしたモジュールをアンロードできないようになっています。


CC BY-SA 4.0
2018-06-28T10:02:18.153
45124
2018-06-28T10:02:18.153
29030
45108
answer


既存のシステムには機能が無いでしょうが、参考までに。

[動的ＤＬＬの解放について](https://qa.atmarkit.co.jp/q/1552)

IJCADの開発元に要望として出してみてはどうでしょうか。  
AutoCAD互換を銘打っているので、それから外れる機能は付けないかもしれませんが。

* * *

追記  
詳しい仕組みを解説している記事がありましたので参考に。  
[アセンブリを動的にロードし、そして完全にアンロードする](http://gushwell.ldblog.jp/archives/52211840.html)

ただし、以下記事のコメントにあるように実用に耐える実現はとても大変らしいですね。  
[AppDomainを利用したDLLのロードができない](https://social.msdn.microsoft.com/Forums/ja-
JP/4910b024-f0d7-4ed4-b538-244b0c51c6a3/appdomain1243421033299921237512383dll123981252512540124891236412391?forum=netfxgeneralja)

メモリ空間が別なので呼び出しやアクセスが大変のようです。

>
> AppDomainはプロセス内プロセス的な役割を持っており、それぞれのAppDomainごとに独立したメモリ空間を持ちます。同じ静的変数でも、主AppDomainのと別AppDomainのは別々にメモリに確保され、AppDomain越しにアクセスはできません。

続くコメントで、労力に見合うものか問われています。

> そこで質問ですが、DLLのアンロードはどれほど重要なのですか？ （AppDomainをまたぐ労力に見合うものですか？）


CC BY-SA 4.0
2018-07-02T23:54:56.900
45247
2018-07-03T06:33:18.633
2018-07-03T06:33:18.633
26370
26370
45108
answer


皆様、回答して頂きましてありがとうございます。

なるほど、現状では不可能だということ、術はあるが一筋縄でいかず大変であるのですね。  
正直、そこまで重要ではなく、頑張って実装するほどのものでもありません。

＃CADの再起動で済む問題ですし、ちょっと面倒かなと思うぐらいなので。

とりあえず、再起動で対応し、これに関しては要望として送ることも検討してみます。

ありがとうございました。


CC BY-SA 4.0
2018-07-03T11:06:09.377
45267
2018-07-03T11:06:09.377
29095
45108
answer