0

アセンブリの物理パスを取得しようとしており、 Assembly.Location [MSDN]を使用しています。私の質問は、ローカルまたは UNC パスが返されるかどうかを決定するものは何ですか? ローカルパスのみが必要です。

4

1 に答える 1

0

ここにある CodeBase の MSDN から: Assembly.CodeBase の MSDN

CodeBase はファイルが見つかった場所への URL であり、Location は実際に読み込まれた場所からのパスです。たとえば、アセンブリがインターネットからダウンロードされた場合、CodeBase は "http://" で始まりますが、Location は "C:\" で始まります。ファイルがシャドウ コピーされた場合、Location はシャドウ コピー ディレクトリ内のファイルのコピーへのパスになります。

また、CodeBase が GAC のアセンブリに対して設定されるとは限らないことも知っておくとよいでしょう。ただし、ディスクから読み込まれたアセンブリの場所は常に設定されます。

この小さな例からわかるように、UNC はローカル アセンブリには使用されません。GAC 内のアセンブリであっても同様です。

public void WriteAssemblyLocations()
{
    Assembly[] assList = AppDomain.CurrentDomain.GetAssemblies();
    foreach (Assembly assembly in assList)
    {
        Console.WriteLine(assembly.Location);
    }
}
于 2012-06-25T20:10:19.383 に答える