场景: 我已经创建了一个库项目,该项目为安装程序提供了接口(使用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 \”,无论实际路径如何
谁能告诉我如何从执行安装程序的地方获取目录路径?
答案 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);