C#Executable执行目录
获取C#可执行文件的路径的最佳方法是什么?
我需要将它用于临时文件夹等,目前我正在使用:
Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase)
但我需要做一个:
.Replace("file:\\", string.Empty)
因为这给了我一个URI类型路径(即在开头有文件:\),这对我的代码的其他部分是不可用的。
不是你的问题的准确答案,但我建议你看看:
Path.GetTempFileName()
http://msdn.microsoft.com/en-us/library/system.io.path.gettempfilename.aspx
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
尝试使用Environment.CurrentDirectory
这将返回当前工作目录的文件夹。
对于临时文件夹等,出于安全原因,您不应该使用执行目录… MS内置了一些内容:
您可以使用来自Environment.SpecialFolder
ApplicationData
(用于漫游用户)或LocalApplicationData
(用于非漫游用户)或CommonApplicationData
(用于非用户相关的事物) – 您在这些文件夹中创建的任何内容(文件+文件夹)已经设置为运行你应用程序的用户所需的权限/权限 – 没有其他人(管理员除外)可以去那里……为了更加安全,你可以加密你放在那里的数据……
请参阅http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx
尝试:
Application.StartupPath
它应该返回没有可执行文件名的路径。
如果程序集已被阴影复制,那么Assembly.Location
将指向dll的卷影副本。
如果您想知道构建输出目录的位置,请使用Assembly.CodeBase
,即:
Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath)
如果要从程序集目录中访问其他资源(例如运行测试套件时),则非常有用。
string executableLocation = Path.GetDirectoryName(Assembly.GetExecutingAssembly()。Location); string txtfile = Path.Combine(executableLocation,“example.txt”);