我希望有人可以解釋爲什麼Directory.GetCurrentDirectory()根據我如何將我的命令行參數傳遞給應用程序返回不同的結果(使用args下面的輸出是如圖所示Directory.GetCurrentDirectory()根據命令行參數返回不同的結果
public class Program
{
static void Main(string[] args)
{
Console.WriteLine("The current directory is {0}", Directory.GetCurrentDirectory());
if(args != null && args.Any())
Console.WriteLine("Command line arguments are {0}", String.Join(", ", args));
Console.ReadLine();
}
}
如果你建立和使用命令提示符運行以下命令:VS在APP.EXE)拖動一個文件夾
直接進入它認爲這一段代碼你期望什麼。它將輸出的應用程序駐留在當前目錄中。
C:\Projects\ArgumentTest\ApplicationA\bin\Debug\ApplicationA.exe C:\mydirectory
The current directory is C:\Projects\ArgumentTest\ApplicationA\bin\Debug\
Command line arguments are C:\mydirectory
如果你建立並通過拖動文件或文件夾在你得到不同的結果應用運行此程序。而不是返回預期的結果,而不是Directory.GetCurrentDirectory()返回您拖過應用程序的第一個文件的路徑。
我目前得到了解決這個問題的方法,但是我很想理解爲什麼會發生這種情況。
其他信息:
- .NET 4.5
- 的Windows 2012R2(虛擬機)的機器
上
+1。如果需要的行爲是獲取EXE的包含文件夾,可能會有用處,可能會提到使用Process.GetCurrentProcess()。MainModule.FileName或Assembly.GetExecutingAssembly()。Location來獲取該信息。 –
謝謝馬克。我想我沒有完全理解GetDirectory(),因爲我從未在我的運行應用程序之外真正調用它。 – Svenkle