C#获取当前路径的几种方法与区别

//获取模块的完整路径。
this.test.Text += "1、" + System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName+"\r\n";
//获取和设置当前目录(该进程从中启动的目录)的完全限定目录。
this.test.Text += "2、" + System.AppDomain.CurrentDomain.BaseDirectory + "32.txt"+"\r\n";
//获取应用程序的当前工作目录。
this.test.Text += "3、" + System.Environment.CurrentDirectory + "\\32.txt" + "\r\n";
//获取程序的基目录。 
this.test.Text += "4、" + System.IO.Directory.GetCurrentDirectory() + "\\32.txt" + "\r\n";
//获取和设置包括该应用程序的目录的名称。
this.test.Text += "5、" + System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "32.txt" + "\r\n";
//获取启动了应用程序的可执行文件的路径。
this.test.Text += "6、" + System.Windows.Forms.Application.StartupPath + "\\32.txt" + "\r\n";
//这种方法不用考虑各种斜杠之类的,直接拼接起来。
this.test.Text += "7、" + Path.Combine(Application.StartupPath, "32.txt") + "\r\n";
//获取启动了应用程序的可执行文件的路径及文件名,效果和1一样。
this.test.Text += "8、" + System.Windows.Forms.Application.ExecutablePath ;

1、C:\Users\lenovo\Documents\Visual Studio 2010\Projects\jsonorxml\jsonorxml\bin\Debug\jsonorxml.vshost.exe
2、C:\Users\lenovo\Documents\Visual Studio 2010\Projects\jsonorxml\jsonorxml\bin\Debug\32.txt
3、C:\Users\lenovo\Documents\Visual Studio 2010\Projects\jsonorxml\jsonorxml\bin\Debug\32.txt
4、C:\Users\lenovo\Documents\Visual Studio 2010\Projects\jsonorxml\jsonorxml\bin\Debug\32.txt
5、C:\Users\lenovo\Documents\Visual Studio 2010\Projects\jsonorxml\jsonorxml\bin\Debug\32.txt
6、C:\Users\lenovo\Documents\Visual Studio 2010\Projects\jsonorxml\jsonorxml\bin\Debug\32.txt
7、C:\Users\lenovo\Documents\Visual Studio 2010\Projects\jsonorxml\jsonorxml\bin\Debug\32.txt
8、C:\Users\lenovo\Documents\Visual Studio 2010\Projects\jsonorxml\jsonorxml\bin\Debug\jsonorxml.EXE

1获取启动了应用程序的可执行文件的路径及文件名和8功能差不多,但是1得到的是vshost.exe,8得到的是exe ,这两个有什么区别呢,

vshost.exe是宿主进程文件
宿主进程文件 (.vshost.exe) 由 Visual Studio 2005 使用,不应通过应用程序直接运行或部署。
  宿主进程是 Visual Studio 2005 中的一项功能,能提高调试性能,支持部分信任调试并支持设计时表达式计算。宿主进程文件的文件名中包含 vshost,并位于项目的输出文件夹中。
 ●提高的调试性能
  宿主进程创建一个应用程序域并将调试器与应用程序关联起来。执行这些任务会导致在开始调试和开始运行应用程序之间有很明显的延迟。通过在后台创建应用程序域和关联调试器,并在运行应用程序之间保存应用程序域和调试器状态,宿主进程使性能得到提高。
 ●部分信任调试
  在“项目设计器”的安全页中,可将应用程序指定为部分信任应用程序。调试部分信任应用程序需要对应用程序域进行特殊的初始化。此初始化由宿主进程处理。
 ●设计时表达式计算
  设计时表达式计算使您可以从“即时”窗口进行代码测试,而不必运行应用程序。宿主进程在设计时表达式计算期间执行此代码。
也就是说这个是可以删除的,删除出双击EXE也是可以运行的,给客户发包可以不发这个vshost.exe。即使你把debug文件夹下的vshost.exe删除,当你F5运行程序的时候,vshost.exe还是会自动生成。


windows和web 就应用程序来说,他们的运行路径是不一样的,

string path = "";    
     
 if (System.Environment.CurrentDirectory == AppDomain.CurrentDomain.BaseDirectory)//Windows应用程序则相等   
     
{    
 path = AppDomain.CurrentDomain.BaseDirectory;    
    
 }    
    
 else   
     
{    
     
  path = AppDomain.CurrentDomain.BaseDirectory + "Bin\";    
    
 }   
View Code


3可以应用于控制台程序、winform、windows服务,1可以应用于WEB,4都可以应用。
但方法4是加载应用程序的路径。如果是Web应用程序,取得的路径是:C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files目录。所以Web项目还是使用Server.MapPath吧
建议用2。

posted @ 2016-03-28 09:30  Jean-Study  阅读(600)  评论(0编辑  收藏  举报