相对路径在Win32里很常见。在Win32里相对路径比较好理解,一般就是相对于当前目录。
在.Net Framework里情况比Win32要复杂。AppDomain里有当前目录,也有ApplicationBase(这个怎么翻译?)。当你说相对路径的时候,你是指相对于哪个目录呢?
CLR是不可能完全知道你的相对路径是相对于哪个目录的。所以CLR做一些最合理的猜测。一般来说,如果和assembly loading有关的,CLR用ApplicationBase,比如Assembly.LoadFrom,Codebase hint in config file。其他的CLR用当前目录。
但很多时候CLR的决定并不是你想要的。所以最好最好不要使用相对路径。如果你一定要用,千万要注意CLR认为那是相对于当前目录,还是ApplicationBase。