为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
拉丁的传说 2022-01-16 20:01:38
场景:我创建了一个库项目,它为安装程序提供接口(使用安装屏蔽创建的 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.dll3). Assembly.GetExecutingAssembly().Location// 返回空字符串4). AppDomain.CurrentDomain.BaseDirectory// 无论实际路径如何,都返回“C:\Windows\syswow64\”谁能告诉我如何从执行安装程序的位置获取目录路径?
查看完整描述

3 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

您可以使用

Directory.GetCurrentDirectory();

获取当前目录路径

进口 System.IO


查看完整回答
反对 回复 2022-01-16
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

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



查看完整回答
反对 回复 2022-01-16
?
四季花海

TA贡献1811条经验 获得超5个赞

假设您正在运行由 InstallShield 构建的基于 MSI 的安装:

您遇到的问题是因为这些电话的工作方式。您在外部 Dll 中实现此功能,并且 Dll 没有自己的当前目录 - 它们具有调用 Dll 的进程的当前目录。在这种情况下,您从 msiexec.exe 进程中被调用(假设您在自定义操作中执行此操作),因此您将获得 msiexec.exe 的当前目录。

除此之外,还有一些其他的观察:

  1. 您没有准确说明何时调用代码,但可能是在用户选择安装文件夹之前,因此搜索并没有真正帮助。

  2. InstallShield 可能提供对文件搜索的支持。如果这是一个 MSI 设置,它肯定会。

  3. 安装很少会在安装文件夹中查找文件,因为很少有充分的理由。如果您需要该文件,请将其添加到您的安装中,或者如果它是可再发行的,则添加标准的 redist 包,也许是一个合并模块。如果该文件属于另一个设置,如果该产品被卸载,您会怎么做?您是否正在检查版本以查看它是否与您的应用程序兼容?一般来说,所有设置都会安装他们需要的文件,如果共享文件被多个不同的产品使用,则它们是向后兼容的。


查看完整回答
反对 回复 2022-01-16
  • 3 回答
  • 0 关注
  • 284 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号