- PR -

iniファイル読込でエラー

投稿者投稿内容
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-03-30 14:39
引用:

Jittaさんの書き込み (2004-03-30 13:22) より:
引用:

ぼるとさんの書き込み (2004-03-30 11:19) より:

・・・というか、1.0でビルドして1.1で動作させてた場合、どちらの動作になるんでしょうか?


 DLL Hellを避ける一つの工夫として、.NET Frameworkでは、GACに登録されたDLLはすべてバージョンごとに別のディレクトリ(ディレクトリ、というのは語弊があるのかな?)にしまわれ、それぞれのバージョンを参照します。

 自作のコンポーネントでも、厳密名をつけてGACで管理できるようにすれば、「このバージョン以降を使う」などの設定ができるようになるようです。


まあ、そうではあるんですけど、今回の話とはちょっと微妙かも…

.NET Framework 上で何らかのアプリケーションが動作するとき、そこに絡んでくるバージョンは、ランタイムのバージョンと、そこでロードされるアセンブリのバージョンがあります。
MSCORLIBだったかは、ランタイムに合わせて固定だったかな…ちょっとはっきり覚えてませんが。

で、元々の話としては、ランタイムのバージョンを問題にしているので、アセンブリのバージョン指定とはまた別の話なのですが、しかしながら、FileOpen?はVB用のアセンブルにあるでしょうから、実は問題になるのはロードされるアセンブリのバージョンです。
ただ、ビルド時のアセンブリ参照時には、VBのアセンブリ?はビルドした環境用のバージョンを参照していますから、実行時に読み込まれるアセンブリもビルド時のアセンブリになりますね。

本質的には、今回のような動作(まあ、今回のことに関してはドキュメントミスのようですが)は、ロードされるVBのアセンブリのバージョンに依存するということになるでしょう…
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-30 14:52
 一郎さんが示されたところにある「.NET Framework Version 1.1 を使用して作成されたアプリケーションを .NET Framework Version 1.0 で実行するように指定するには」の構成ファイルを作成し、よねKENさんのPGを動かしました。

 結果、シェアされていないので、ドキュメントの不備と判断します。
#が、ランタイムのバージョンを見られる?

 「作られたバージョンで動作する」と思いこんでいました。。。
#間違い失礼


 読み返してみたのですが、この説明には、1.0で作ったアセンブリは、1.1がインストールされている環境で、1.1を使用して動作する、と書いてあります。そして、1.0で作ったアセンブリを1.1で動かす為の構成ファイル、1.1で作ったアセンブリを1.0で動かす構成ファイルはあるのですが、1.0で作った物を、混在環境でも1.0で動かすようにする(書いていてややこしいぞ)構成ファイルはあがっていませんね。
 なちゃさんのおっしゃる『VB用のアセンブルにあるでしょうから、実は問題になるのはロードされるアセンブリのバージョンです。』も、
引用:

<assemblyIdentity name="Microsoft.VisualBasic" publicKeyToken="b03f5f7f11d50a3a" culture=""/>
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="7.0.3300.0"/>


これか、
引用:

<assemblyIdentity name="Microsoft.VisualBasic.Vsa" publicKeyToken="b03f5f7f11d50a3a" culture=""/>
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="7.0.3300.0"/>


これのどちらかだと思います。(バージョンごとにバインド先を変更することができるみたいですね)

[ メッセージ編集済み 編集者: Jitta 編集日時 2004-03-30 15:09 ]
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-03-30 16:23
引用:

Jittaさんの書き込み (2004-03-30 14:52) より:
1.0で作ったアセンブリを1.1で動かす為の構成ファイル、1.1で作ったアセンブリを1.0で動かす構成ファイルはあるのですが、1.0で作った物を、混在環境でも1.0で動かすようにする(書いていてややこしいぞ)構成ファイルはあがっていませんね。


これに関しては、ほっておけば自動的にこうなるので書かれてないんでしょう。
で、この動作を変更する必要がある場合に、構成ファイルでの指定を明示的に行うということだと思います(動作させるランタイムおよびロードされるアセンブリのバージョンリダイレクト)。

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