一直没时间去琢磨CodeBase及Location属性的区别在哪里。最近参与Office的VSTO编程,终于有时间研究了一小下。
Assembly.CodeBase返回的是file:///形式的字符串,指向的是Assebmly的加载地址。为Assembly的存放地。
Assembly.Location 返回的是Driver:/形式的字符串,指向的是Assembly执行的地址。此为Assembly在缓存里的地址。
由于Office加载的后置代码会被先临时缓存到本地的Cache中来执行,因此通过Location的属性我们可以找到该Assebmly到底被临时缓存到哪里了。
如果程序中要获得当前的运行路径,则不能使用Location属性,也不能使用GetCurrentDirectory方法,而应该使用CodeBase。