.NET Core 中的路径问题
2019獨角獸企業重金招聘Python工程師標準>>>
摘要:?.NET Core 應用程序相對于以前的.NET Framework 應用程序在啟動運行的方式上有一定的差異,今天就來談一談這個獲取應用程序啟動路徑的問題。
.NET Core 應用程序相對于以前的.NET Framework 應用程序在啟動運行的方式上有一定的差異,今天就來談一談這個獲取應用程序啟動路徑的問題。
1.工作路徑 WorkingDirectory
下面的兩種方式都可以獲取工作路徑,結果都是一樣的:
Environment.CurrentDirectory; Directory.GetCurrentDirectory();其實所謂的工作路徑就是我們應用程序的啟動路徑,所以我們平時所說的獲取應用程序的啟動路徑,也是通過上面的方式。
(1)我們通過VS F5直接運行
VS會先編譯我們的項目,輸出到Debug對應的sdk版本 目錄下,然后以這個目錄作為工作路徑,啟動我們的應用程序。
(2)通過dotnet 命令運行
我們在項目根目錄,執行?dotnet run命令:
我們執行?dotnet run命令來啟動時,對于程序的工作路徑就是執行命令的路徑,所以說,獲取到的路徑變化了。但是我們通過dotnet run命令運行的應用程序文件實際所在的目錄也是和上面的目錄一樣的,即:Debug對應的sdk版本,我們可以通過代碼來測試一下:
新加的代碼是獲取程序集所在的路徑,可以發現也是在 Debug對應的sdk版本 目錄下的。
我們將程序發布到?D:\test?目錄下
可以看到,前兩種方式獲取到的都是執行dotnet命令所在的目錄即工作目錄,后一種方式是獲取到的我們應用程序所在的目錄。
2.結論
通過上面的測試,我們可以得出結論,.NET Core 應用程序獲取工作路徑/啟動路徑,就是獲取的執行dotnet命令時所在的目錄,所以當我們在Linux等系統部署時,設置守護進程時,記得一定要將工作路徑設置為程序文件所在的目錄,不然應用程序獲取到的路徑將不會是應用程序文件所在的目錄,當我們在應用程序里設置了一些相對路徑,諸如讀取配置文件,寫日志(Log4net、NLog),將會與我們的預期不一樣。因為相對路徑,是默認相對于應用程序的工作路徑的。
Environment.CurrentDirectory; //獲取應用程序工作目錄 Directory.GetCurrentDirectory();//獲取應用程序工作目錄(和上面的方式效果是一樣的)Path.GetDirectoryName(typeof(Program).Assembly.Location);//獲取應用程序所在目錄(絕對,不受工轉載于:https://my.oschina.net/u/3722671/blog/1835059
總結
以上是生活随笔為你收集整理的.NET Core 中的路径问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: orcale存储过程学习之路(一)
- 下一篇: xshell使用xftp传输文件 使用p