.manifest?.local?.config?

最近のVisual Studioで開発を行うと勝手にできてしまうんです、とか言われました。

これらは全て、アプリケーションが使うDLLの選定に関係しますので覚えてください。

以下、解説していきますが、答えを見るまえに自分で考えてみてください。


出てきた時代順に説明します。

■ .local

DLLリダイレクト用のファイル。Windows 98 SE、またはWindows 2000以降で利用可能。
EXEファイル名の後に.localを付加した空ファイルを作成した場合、EXEがあるディレクトリ内にあるDLLを優先して読み込む。

つまり、System32等の共有ディレクトリ内のファイルより、動作確認がとれているDLLを優先して利用したい場合に使用。特にWindows2000では.manifestが利用できないため、これを使う場面が出てくる。Vistaでは推奨されなくなった。

Windows 2000ではKnownDLLでさえもリダイレクトできてしまう点に注意。

■ .manifest

Side-By-side (SxS) 構成ファイル。Windows XP以降で利用可能。

EXE、DLL名の後に.manifestを付加したXML形式のファイルで、読み込むDLLについて記載する。つまり、ビルドに使ったDLLのバージョンを入れておくこと。EXEやDLLの中にリソースとして直接埋め込むこともできる。

ちなみに、.localと.manifestがある場合、manifestが優先。

■ .config

アプリケーション構成ファイル。アセンブリのリダイレクトは.NET Framework 1.1以降で利用可能。

EXE名の後に.configを付加したXML形式のファイルで、.NET Framework用の動作環境設定に使うのだが、上記のmanifestを無視してSxSアセンブリを読ませることができる属性を追加可能。つまり、セキュリティホール等の問題でmanifestで指定されたDLLを意図的に無視する時にも使える。

.NETのアセンブリローダについては書き残してますが、ここに一緒に書くと混乱するので、やめておきます。



(07/01/20) .localが使えるOSのバージョンについて訂正。

Leave a Reply

2 コメント - ".manifest?.local?.config?"

更新通知を受け取る »
avatar
並び替え:   新しい順 | 古い順 | 最も評価の多い
とおりすがり
ゲスト

http://www.microsoft.com/japan/msdn/windows/windows2000/sidebyside.aspx
ここを読む限りWindows 98 SEでも.localは使えるようです。

konuma
ゲスト

>ここを読む限りWindows 98 SEでも.localは使えるようです。
ご指摘ありがとうございます。
修正させて頂きます。
実は98SEの存在すら記憶にありませんでした。(^^;;;

wpDiscuz