获取当前程序文件的路径也算是一个比较常见的需求,比如我有一个文件conn.xml位于.exe的同一目录,在运行时需要从中读取一些设置信息。
进程对象在.NET中表现为System.Diagnostics.Process类,通过调用Process.GetCurrentProcess().MainModule.FileName可获得当前执行的exe的文件名。但是这个方法得到的仅仅是文件名,如果程序运行期间没有切换工作目录,那么可以调用System.IO.Path的方法获取绝对路径。但是当前目录同样可以通过Environment.CurrentDirectory获得,而且很多软件在使用Open Dialog打开文件的时候,都会切换工作目录,而使得这一机制失效。
如果是在Windows Forms应用程序中,当前应用也表现为System.Windows.Forms.Application对象,通过其静态属性Application.ExecutablePath和Application.StartupPath,可以取得可执行文件的路径和启动路径。
但如果不是在Windows应用中呢,或者是在Library中呢,就算是Application对象的属性依然能获得,也需要在工程中添加System.Windows.Forms这个Assembly的引用,非常不方便。这个时候,可以通过Assembly的静态方法,GetCallingAssembly或者GetExecutingAssembly取得当前执行的Assembly,然后通过Assembly类的Location获取assembly的位置。
但是使用Assembly的时候,可能会遇到权限方面的问题,同时Assembly.GetCallingAssembly或者Assembly.GetExecutingAssembly有可能得到的不是.exe文件的位置。在GAC中的添加了强名的Assembly,运行时是可以不必与.exe在同一目录的。
.NET的进程启动时,会创建AppDomain,所有的Assembly都被Load到某一个AppDomain中,而AppDomain中提供了SetupInformation属性,可以获取AppDomain启动时的一些信息,因此,可以通过调用AppDomain.CurrentDomain.SetupInformation.ApplicationBase获取当前应用程序所在的路径。
在通过以上方法取到所需的目录后,可以调用System.IO.Path的方法获取文件名,目录名,绝对路径等。停止对路径字符串的分析,而改用System.IO.Path类吧。
开发.NET下应用程序时,了解Process/Application->AppDomain->Assembly的关系,对于实现正确的逻辑,是非常有帮助的。
分享到:
相关推荐
GDParser 一个简单的C#控制台应用程序,用于解析Grim Dawn保存文件并提取字符统计信息/信息。 使用marius00的《残酷黎明物品助手》中的代码。 我希望添加函数以呈现显示特性信息HTML表或输出XML文件。用法GDParser....
可以下载此渐进式Web应用程序,使其外观与普通的移动应用程序相同,并使用Meetup API来获取在绘图或饼图中可视化的即将发生的事件等。 该应用程序是通过测试驱动的开发方法构建的,该方法使用Jest和Puppeteers进行...
可用脚本在项目目录中,可以运行:yarn start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果进行编辑,页面将重新加载。 您还将在控制台中看到任何棉绒错误。yarn test 在交互式监视模式下启动测试运行...
第15章 键盘与鼠标 389 15.1 鼠标操作技巧 390 0626 鼠标双击窗体时模拟键盘Tab键操作 390 0627 定义鼠标指针形状 390...0793 如何获取控制台应用程序的显示结果 481 0794 如何用@代替路径中的转义字符 482
Reactapi获取并编辑React应用程序可从API获取项目列表并提供编辑/添加功能。 该项目是通过。 要使该项目快速启动并运行: 第一:npm安装第二:纱线启动可用脚本在项目目录中,可以运行:yarn start 在开发模式下运行...
在开发模式下运行应用程序。 打开在浏览器中查看它。 如果进行编辑,页面将重新加载。 您还将在控制台中看到任何棉绒错误。 npm test 在交互式监视模式下启动测试运行程序。 有关更多信息,请参见关于的部分。 ...
RobofriendsReact钩这是创建基本React应用程序的示例应用程序,该应用程序调用渲染卡,创建搜索框并获取数据。 该项目根据新的更改和依赖性进行更新。 该项目开始使用类并将其更改为挂钩。 下一个更改将把这个项目...
在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误。 npm test 在交互式监视模式下启动测试运行器。 有关更多信息,请参见关于的部分。 ...
在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误。 npm test 在交互式监视模式下启动测试运行器。 有关更多信息,请参见关于的部分。 ...
在开发模式下运行该应用程序。打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。您还将在控制台中看到任何棉绒错误。 npm test 在交互式监视模式下启动测试运行程序。有关更多信息,请参见关于的部分。 ...
这是一个简单的一站式应用程序,适用于所有有竞争能力的程序员,可获取所有即将举行和正在进行的CP竞赛的详细信息,并有助于在不浏览其他站点的情况下保持所有竞赛的成功。 目前涵盖 厨师 黑客世界 Codeforce竞赛 ...
这是一个网络应用程序,它允许搜索要雇用的机器人,它是使用React和CSS3构建的,并且可以从名为JSONPlaceholder的免费虚假在线REST API中获取数据。 该项目是通过引导的。 可用脚本 在项目目录中,可以运行: yarn...
Hotel SPA是一个React单页应用程序,可对Keycloak的用户进行身份验证,获取JWT令牌,然后使用它进行API调用以对支持的服务进行采样。 该项目是一个更大的演示应用程序的一部分,该应用程序记录在: 。 可用脚本 该...
可用脚本在项目目录中,可以运行:npm start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误。npm test 在交互式监视模式下启动测试运行...
可用脚本在项目目录中,可以运行:yarn start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误。yarn test 在交互式监视模式下启动测试...
在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误。 yarn test 在交互式监视模式下启动测试运行器。 有关更多信息,请参见关于的部分。...
在开发模式下运行应用程序。 打开在浏览器中查看。 如果您进行编辑,页面将重新加载。 您还将在控制台中看到任何 lint 错误。 npm test 在交互式监视模式下启动测试运行程序。 有关更多信息,请参阅有关的部分。 ...
在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误。 npm test 在交互式监视模式下启动测试运行器。 有关更多信息,请参见关于的部分。 ...
在开发模式下运行应用程序。打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。您还将在控制台中看到任何棉绒错误。 npm test 在交互式监视模式下启动测试运行器。有关更多信息,请参见关于的部分。 npm ...
使用SWR进行React App进行数据提取yarn start 在开发模式下运行应用程序。 打开在浏览器中查看。 如果进行编辑,页面将重新加载。 您还将在控制台中看到任何棉绒错误。yarn test 在交互式监视模式下启动测试运行程序...