2 台の異なるマシンで他の誰かのコード (ライセンス取得済み) を使用しています。あるマシンでは、Application.ExecutablePath はプログラマーが期待していたはずの結果を返しますが、別のマシンではそうではありません。どちらも Windows 7 マシンです。
私のマシンでは、 Application.ExecutablePath は次のようなものを返します。
"C:\\Dir1\\Dir2\\Dir3/bin/Debug/APP.EXE"
他のマシンでは、それが返されます
"C:\\Dir1\\Dir2\\Dir3\\bin/Debug/APP.EXE"
コードがこれを行うため、プログラマーは明らかに 2 番目の戻り文字列を予期していました。
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 パス (「\」を使用) を返すことをいつ、どこで決定するかについての情報が見つかりません。このコードがマシンによって動作が異なるのはなぜですか?