我正在尝试获取程序集的物理路径并正在使用 Assembly.Location [MSDN]。我的问题是什么决定了返回的是本地路径还是 UNC 路径?我只想要本地路径。
问问题
136 次
1 回答
0
来自 CodeBase 上的 MSDN,这里是:Assembly.CodeBase 上的 MSDN
CodeBase 是指向文件所在位置的 URL,而 Location 是实际加载文件的路径。例如,如果程序集是从 Internet 下载的,则其 CodeBase 可能以“http://”开头,但其 Location 可能以“C:\”开头。如果文件是影子复制的,则 Location 将是影子复制目录中文件副本的路径。
还很高兴知道,不能保证为 GAC 中的程序集设置 CodeBase。但是,将始终为从磁盘加载的程序集设置位置。
从这个小例子可以看出,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 回答