我在两台不同的机器上使用别人的代码(许可)。在一台机器上,Application.ExecutablePath 返回程序员必须预期的结果,而在另一台机器上则没有。两者都是 Windows 7 机器。
在我的机器上,Application.ExecutablePath 返回如下内容:
"C:\\Dir1\\Dir2\\Dir3/bin/Debug/APP.EXE"
在另一台机器上,它返回
"C:\\Dir1\\Dir2\\Dir3\\bin/Debug/APP.EXE"
程序员显然期望第二个返回字符串,因为代码是这样做的:
string path = Application.ExecutablePath;
short found = (short)path.LastIndexOf(@"\");
if (found > -1)
{
path = path.Substring(0, found);
}
try
{
foreach (string File in Directory.GetFiles(path + @"\Res\Patterns\", "*.xml"))
{
found = (short)File.LastIndexOf(@"\");
if (found > -1)
//... use files found
并且文件目录在两台机器上都存在于 Dir3 下,所以它在另一台机器上找到,但在我的机器上没有。我找不到任何关于 Windows 何时何地决定返回正斜杠(如 URL 路径)与使用“\”的 UNC 路径的信息。为什么这段代码在不同的机器上会有不同的工作方式?