- PR -

ILMergeでひとつにまとめたexeで.netリモーティング

1
投稿者投稿内容
t313
会議室デビュー日: 2006/06/11
投稿数: 1
投稿日時: 2006-06-11 01:49
元々.netリモーティングが正常に動作していたアプリだったのですが
exeと複数のdllで構成していたので、
「ILMerge」を使用してひとつのexeにまとめました。
(ソースコードの改変、リビルドなどはしていません。)
そして、以前と同じように実行したのですが、
System.InvalidCastException : 引数の戻り値の型が無効です。
という例外が発生するようになってしまいました。

クライアントからサーバの呼び出しは成功しています。
サーバ呼出し後、サーバからリモートオブジェクトを
クライアントに返却しているのですが
その時に例外が発生しているようです。

サーバから返されるオブジェクトの型が
クライアントが期待している型と一致していないために
発生しているようです。

.netリモーティングを行うアプリのexeとdllを
「ILMerge」を使用して、ひとつのexeにまとめるのは無理なのでしょうか?
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-06-11 02:28
.NET においては、型はアセンブリの名前やバージョン情報まで含めて特定されます。
サーバ側が exe と dll を一つに纏めたら、少なくとも dll 側に存在していた型は別の型になってしまうでしょう。
となるとクライアント側も参照先を変える必要があるでしょうね。
サーバ.exe にリモートオブジェクト型があるなら、クライアント.exe は サーバ.exe を参照することになるかな。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-06-11 03:23
引用:

となるとクライアント側も参照先を変える必要があるでしょうね。
サーバ.exe にリモートオブジェクト型があるなら、クライアント.exe は サーバ.exe を参照することになるかな。


と書いてから気付いたけどそう言うわけにはいかないですな。
やはり少なくともリモーティングでやり取りするオブジェクトについては素直に dll としておくのがベターでしょう。
1

スキルアップ/キャリアアップ(JOB@IT)