對於Windows程序 和Web 應用程序來講,他們運行的路徑是不同的,因此關鍵是判斷當前運行的程序是哪一種程序.因而咱們能夠使用以下的代碼web
string path = "";c#
if (System.Environment.CurrentDirectory == AppDomain.CurrentDomain.BaseDirectory)//Windows應用程序則相等windows
{
path = AppDomain.CurrentDomain.BaseDirectory;
}
else
{
path = AppDomain.CurrentDomain.BaseDirectory + "Bin/";
}asp.net
這樣若是咱們寫了一個類庫,類庫中用到了Assembly.LoadFrom,因爲是通用類庫,因此可能用到Windows程序中也可能用到Web中,那麼用上面的代碼就很方便了.spa
作法2:.net
string MyPath = System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName);orm
1.asp.net webform用「Request.PhysicalApplicationPath獲取站點所在虛擬目錄的物理路徑,最後包含「/」;string
2.c# winform用
A:「Application.StartupPath」:獲取當前應用程序所在目錄的路徑,最後不包含「/」;
B:「Application.ExecutablePath 」:獲取當前應用程序文件的路徑,包含文件的名稱;
C:「AppDomain.CurrentDomain.BaseDirectory」:獲取當前應用程序所在目錄的路徑,最後包含「/」;
D:「System.Threading.Thread.GetDomain().BaseDirectory」:獲取當前應用程序所在目錄的路徑,最後包含「/」;
E:「Environment.CurrentDirectory」:獲取當前應用程序的路徑,最後不包含「/」;
F:「System.IO.Directory.GetCurrentDirectory」:獲取當前應用程序的路徑,最後不包含「/」;io
3.c# windows service服務中用「AppDomain.CurrentDomain.BaseDirectory」或「System.Threading.Thread.GetDomain().BaseDirectory」;
用「Environment.CurrentDirectory」和「System.IO.Directory.GetCurrentDirectory」將獲得「 system32」目錄的路徑;
若是要使用「Application.StartupPath」或「Application.ExecutablePath 」,須要手動添加對「System.Windows.Forms.dll 」的引用,並在程序開頭用「using System.Windows.Forms」聲明該引用;table
4.在卸載程序獲取系統安裝的目錄: System.Reflection.Assembly curPath = System.Reflection.Assembly.GetExecutingAssembly(); string path=curPath.Location;//獲得安裝程序類SetupLibrary文件的路徑,獲取這個文件路徑所在的目錄即獲得安裝程序的目錄;