C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: 1つのPC上でのアセンブリ名に関して


(過去ログ 98 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■58278 / inTopicNo.1)  1つのPC上でのアセンブリ名に関して
  
□投稿者/ ZOON (1回)-(2011/03/30(Wed) 14:56:33)

分類:[.NET 全般] 

開発環境:VisualStudio2008
言語:C#

現在、同じアセンブリ名のプロジェクトですが、別のEXE名にして1台のPCに複数入れようと思っています。
VisualStudioではアセンブリ名を変更すれば、自動的にその名前でEXEが作成されると思いますが、SoapFormatterクラスでのファイルの読み書きを二つのEXEから参照したいのでこのように実装しようと思っています。
※ちなみに、SoapFormatterで出力したファイルは同じアセンブリ名でしか読みこめませんよね?ここが違っていたら申しわけございません。

そこで、同じアセンブリ名のまま、プロジェクト内のソースコードをコンパイルオプションで振る舞いを変更し、ビルド後に作成されたEXE名を任意のファイル名に変更して対応しようかと思いました。
ですが、「同じアセンブリ名のファイルが1台のPCにインストールされると、OS的にはどっちがどうなのか等の判定が厳しく(あいまいに?)なる」と言われたので調査したのですが、1台に同じアセンブリ名のファイルが存在してはならない、等の説明を見つけることはできませんでした。


現在、動作的には問題なく動いておりますが、たまたま"ナリ"に動いているだけかも知れないので、その確証を得たいと思い、質問させていただきました。


どうか、よろしくお願いいたします。

引用返信 編集キー/
■58279 / inTopicNo.2)  Re[1]: 1つのPC上でのアセンブリ名に関して
□投稿者/ 囚人 (604回)-(2011/03/30(Wed) 15:07:11)
状況が全然わかりませんね。SoapFormatterに何故アセンブリ名?(exe名?)が関係あるんでしょうか?

プロジェクト名?アセンブリ名?exe名?がごちゃごちゃして何のこと指してるのかわかりません。
どういう構成?

引用返信 編集キー/
■58280 / inTopicNo.3)  Re[2]: 1つのPC上でのアセンブリ名に関して
□投稿者/ ZOON (2回)-(2011/03/30(Wed) 15:45:52)
No58279 (囚人 さん) に返信
> 状況が全然わかりませんね。SoapFormatterに何故アセンブリ名?(exe名?)が関係あるんでしょうか?
>
> プロジェクト名?アセンブリ名?exe名?がごちゃごちゃして何のこと指してるのかわかりません。
> どういう構成?
>

説明下手で申し訳ございません。

<ユースケース>
ドキュメントファイルなどを読み込む、「上位版」のアプリと「下位版」のアプリの設計を考えています。
・それらのアプリは別のEXE名で作成したい。
・それらのアプリは、共通して使用するドキュメントファイルがある。
などが最低限の仕様となっています。

<ドキュメントファイルの読み書き>
・「上位版」のアプリから作成されたドキュメントファイルを「下位版」のアプリでも読み込めます。
・ドキュメントの出力はSoapFormatterクラスを使用して行います。

↑上記のような構想で「上位版」「下位版」のアプリを作成しました。


<<不具合>>
ユースケースにありますように、別EXE名とするために「上位版」「下位版」それぞれのプログラムのアセンブリ名を「上位版EXE名」「下位版EXE名」に指定しました。
<ドキュメントファイルの読み書き>にありますように、「上位版」アプリで作成されたファイルを「下位版」アプリで読み込みをしました。
-----読み込み部例------------------------------
SoapFormatter formatter = new SoapFormatter();
document = (Document)formatter.Deserialize(fs);
-----------------------------------------------
デバッグするとformatter.Deserialize(fs)実行時に、「解析できません。xxxに関連付けられているアセンブリはありません」というエラーが発生してしまいます。
※xxxとはアプリ中でファイル入出力対象のクラス名が記載されています。

上位版、下位版のアセンブリを統一させるとこのエラーが発生しないので、アセンブリ変更されたファイルはSoapFormatterでは読み込めなくなってしまうのかな?と思いました。


「上位版」「下位版」それぞれのアセンブリ名を同じにすれば、ファイルの読み書きが問題なく行えるという結果から、アセンブリ名は統一し、作成されたEXE名のみを変更しようと考えました。
その設定で「上位版」「下位版」アプリがPCにそれぞれインストールした場合、1台のPCに同じアセンブリ名(ファイル名は違うけど)のアプリが複数存在してしまっていると思われます。

その状況がOS的に問題ない操作なのかどうかが分からなかったので、ご質問させていただきました。


以上、よろしくお願いいたします。
引用返信 編集キー/
■58284 / inTopicNo.4)  Re[3]: 1つのPC上でのアセンブリ名に関して
□投稿者/ 囚人 (605回)-(2011/03/30(Wed) 16:11:29)
SoapFormatterの詳細は忘れてしまったんですが、フォーマットがアセンブリ(名)に固定されるなら、Documentクラスだけ exe と別のアセンブリ(要するにdll)にして、下位版と上位版で共有した方が良いんじゃないでしょうか?


>1台のPCに同じアセンブリ名(ファイル名は違うけど)のアプリが複数存在してしまっていると思われます。

これ自体は別に問題ないでしょう。パスが違えば。
アセンブリ名が同じでファイル名が違うなんて状況にできたかな?ってのはありますが(逆ならまだしも)

引用返信 編集キー/
■58289 / inTopicNo.5)  Re[4]: 1つのPC上でのアセンブリ名に関して
□投稿者/ ZOON (4回)-(2011/03/30(Wed) 16:50:54)
No58284 (囚人 さん) に返信
> SoapFormatterの詳細は忘れてしまったんですが、フォーマットがアセンブリ(名)に固定されるなら、Documentクラスだけ exe と別のアセンブリ(要するにdll)にして、下位版と上位版で共有した方が良いんじゃないでしょうか?
⇒アドバイスありがとうございます。
確かにそうですね。共通化していればEXE側でのアセンブリを意識しなくて済みそうです。


>
> >1台のPCに同じアセンブリ名(ファイル名は違うけど)のアプリが複数存在してしまっていると思われます。
>
> これ自体は別に問題ないでしょう。パスが違えば。
> アセンブリ名が同じでファイル名が違うなんて状況にできたかな?ってのはありますが(逆ならまだしも)
>
⇒これは、手動でファイル名を変更したにすぎません(笑)。


とりあえず、解決とします。
ありがとうございました。
解決済み
引用返信 編集キー/
■58316 / inTopicNo.6)  Re[5]: 1つのPC上でのアセンブリ名に関して
□投稿者/ なちゃ (485回)-(2011/03/30(Wed) 22:24:19)
ファイル名を変えるのはかまわないといえば構わないですが、場合によってはだめですよ。
今はExeなので、実行時は必ずロード済みの状態になるので問題ないだけです。
もしこれがDLLならアウトです。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -