我正在尝试获取程序集的物理路径并使用Assembly.Location [MSDN]。我的问题是什么决定了本地路径还是UNC路径?我只想要本地路径。
答案 0 :(得分:0)
来自CodeBase上的MSDN:MSDN on Assembly.CodeBase
CodeBase是找到文件的地方的URL,而 位置是实际加载的路径。例如, 如果程序集是从互联网上下载的,它的CodeBase可能会 以“http://”开头,但其位置可能以“C:\”开头。如果 文件被复制了阴影,Location将是复制的路径 阴影副本目录中的文件。
知道CodeBase不能保证设置也很好 适用于GAC的程序集。将始终为装配设置位置 但是从磁盘加载。
从这个小例子可以看出,UNC不用于本地组装, 即使是GAC中的那些人:
public void WriteAssemblyLocations()
{
Assembly[] assList = AppDomain.CurrentDomain.GetAssemblies();
foreach (Assembly assembly in assList)
{
Console.WriteLine(assembly.Location);
}
}