C#如何获取当前目录路径

时间:2018-09-14 05:34:42

标签: c# .net path installer

场景: 我已经创建了一个库项目,该项目为安装程序提供了接口(使用install shield创建的exe)。我想检查安装程序文件夹中是否存在特定文件。

我尝试了以下操作:

1).  Assembly.GetEntryAssembly().Location
  

//引发“对象引用未设置为对象的实例”

2). new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath
  

//返回:   C:\ Windows \ Microsoft.Net \ assembly \ GAC_32 \ mscorlib \ v4.0_4.0.0.0__b77a5c561934e089 \ mscorlib.dll

3). Assembly.GetExecutingAssembly().Location
  

//返回空字符串

4). AppDomain.CurrentDomain.BaseDirectory
  

//返回“ C:\ Windows \ syswow64 \”,无论实际路径如何

谁能告诉我如何从执行安装程序的地方获取目录路径?

5 个答案:

答案 0 :(得分:3)

您可以使用

Directory.GetCurrentDirectory();

获取当前目录路径

导入System.IO

答案 1 :(得分:1)

如果要获取exe所在的文件夹

AppDomain.CurrentDomain.BaseDirectory

这将返回包含exe的文件夹的完整路径。从那里开始,您可以手动添加文件夹

AppDomain.CurrentDomain.BaseDirectory + @"MyFolder1\MyFolder2";

答案 2 :(得分:0)

尝试一下,它总是对我有用:

Environment.CurrentDirectory

使用上述属性如下。

string currentDirectory = Path.GetDirectoryName(Environment.CurrentDirectory);

答案 3 :(得分:0)

我将回答我自己的问题,不可能从库项目中获取当前路径。您必须从安装程序中获取它。没有其他办法。

谢谢。

答案 4 :(得分:0)

string assemblyPath = Context.Parameters["assemblyPath"];
int i = assemblyPath.Length - 1;
while (assemblyPath[i] != '\\') --i;
string folder = assemblyPath.Substring(0, i);