- PR -

構成ファイルの記述について

投稿者投稿内容
partire
会議室デビュー日: 2006/08/10
投稿数: 9
投稿日時: 2006-08-10 16:38
構成ファイルの記述について教えて下さい

開発環境:Visual Studio 2005

共通のアセンブリを作成してローカルコピーをせずにEXEを起動したいため
以下のようにEXE側の構成ファイルを記述しました.
(GACには配置しておりません)
しかし起動するとSystem.IO.FileNotFoundExceptionが発生してしまいます.
共通のディレクトリはサブディレクトリに存在するわけではありませんので
フルパスで指定しています.
Fuslogvw.exeでをログを見ると
「アプリケーション構成ファイル test.vshost.exe.config を使用します。」
となっており構成ファイルはロードしているようなのですが,原因が分かりません.
原因を教えて頂けませんでしょうか?


以下がcodeBase部分の構成ファイルの抜粋です.

<dependentAssembly>
<assemblyIdentity name="CommonAA" publicKeyToken="aaaaaaaaaaaaaaa" />
<codeBase version="1.0.0.0" href="file:///C:/BIN/CommonAA.dll" />
</dependentAssembly>


未記入
常連さん
会議室デビュー日: 2006/08/10
投稿数: 24
投稿日時: 2006-08-10 16:41
引用:

partireさんの書き込み (2006-08-10 16:38) より:
構成ファイルの記述について教えて下さい

開発環境:Visual Studio 2005

共通のアセンブリを作成してローカルコピーをせずにEXEを起動したいため
以下のようにEXE側の構成ファイルを記述しました.
(GACには配置しておりません)
しかし起動するとSystem.IO.FileNotFoundExceptionが発生してしまいます.
共通のディレクトリはサブディレクトリに存在するわけではありませんので
フルパスで指定しています.
Fuslogvw.exeでをログを見ると
「アプリケーション構成ファイル test.vshost.exe.config を使用します。」
となっており構成ファイルはロードしているようなのですが,原因が分かりません.
原因を教えて頂けませんでしょうか?


以下がcodeBase部分の構成ファイルの抜粋です.

<dependentAssembly>
<assemblyIdentity name="CommonAA" publicKeyToken="aaaaaaaaaaaaaaa" />
<codeBase version="1.0.0.0" href="file:///C:/BIN/CommonAA.dll" />
</dependentAssembly>







partireさん、ここの掲示板では「教えてください」では「教えてくれませんよ」
自分で解決しなさいということしか返信ありません。
残念ながら・・・
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-08-10 17:03
教えてもらえないのは、まぁ、まれに他に誰も知らない、ということがありますが、
たいていは「聞き方が悪い」か「必要な情報をだしていない」からですね。

というのはともかく。

http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_index/index.html
こちらの記事でアセンブリのロードについて詳しく説明されているので
しっかり読めば書いてあると思います。
通常はExeのあるフォルダの下層しか探しにいきませんので、共通のdllを
どこか別の場所に置く、という方法はとれなかったと思います。

#プログラムでアセンブリのロードを行うのであればできるんだったかな。
がんふぃーるど
ベテラン
会議室デビュー日: 2006/06/05
投稿数: 58
お住まい・勤務地: さいたま
投稿日時: 2006-08-10 17:24
アセンブリの探索場所を追加するのであれば、プローブに追加すればよかった気がします。
セミコロンで区切れば複数定義できます。

http://msdn2.microsoft.com/ja-jp/library/yx7xezcf.aspx
partire
会議室デビュー日: 2006/08/10
投稿数: 9
投稿日時: 2006-08-10 18:40
早速の回答ありがとうございました.

どっとねっとふぁん さん
Page3にdependentAssembly要素に厳密名付きアセンブリの名前が書いてあれば絶対パスをhref属性に指定できるとありましたのでやってみました.
しかし構成ファイルの書き方が悪いのかうまくいきません.

がんふぃーるど さん
EXEの配下DLLを配置してプローブでやってみましたが,こちらもうまくいきませんでした.


どちらを使用してもうまくいきませんでしたので,構成ファイルの書き方が悪い可能性がありますので,もう少し調査してみます.
わかりましたら再度投稿します.
YuO
会議室デビュー日: 2005/11/14
投稿数: 11
投稿日時: 2006-08-10 18:59
引用:

partireさんの書き込み (2006-08-10 16:38) より:
<dependentAssembly>
<assemblyIdentity name="CommonAA" publicKeyToken="aaaaaaaaaaaaaaa" />
<codeBase version="1.0.0.0" href="file:///C:/BIN/CommonAA.dll" />
</dependentAssembly>



assemblyIdentityのcultureの指定が抜けているようですが,
これはneutralでも指定しないといけないのでは?
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-08-10 19:01
構成ファイルの書き方というより、厳密名の指定の仕方かな?

http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_02/idnfw11_02_05.html
ここの「アセンブリの表示名」の部分が参考になるかも。
すくなくとも、カルチャを省略できないことは間違いないみたい。
partire
会議室デビュー日: 2006/08/10
投稿数: 9
投稿日時: 2006-08-10 21:37
回答ありがとうございます.

YuO さん
どっとねっとふぁん さん

ご指摘の通りassemblyIdentityにculture=neutralの記述が抜けておりましたので,以下のように追加しましたが状況に変化はありませんでした.

<assemblyIdentity name="CommonAA" culture=neutral publicKeyToken="aaaaaaaaaaaaaaa" />

また,以下のエラーになっていることが分かりましたが内容は調査中です.
「同じバインドが以前見つかり、失敗して hr = 0x80070002 を返しました。」

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