WPF 获取程序路径的一些方法,根据程序路径获取程序集信息

简介: 原文:WPF 获取程序路径的一些方法,根据程序路径获取程序集信息一、WPF 获取程序路径的一些方法方式一 应用程序域 //获取基目录即当前工作目录 string str_1 = System.
原文: WPF 获取程序路径的一些方法,根据程序路径获取程序集信息

一、WPF 获取程序路径的一些方法
方式一 应用程序域

//获取基目录即当前工作目录
string str_1 = System.AppDomain.CurrentDomain.BaseDirectory; 

示例结果:F:\\WPF实例\\bin\\Debug\\
示例说明:取得Debug目录并且带斜杠

//获取应用程序基目录的名称
string str_2 = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase; 

示例结果:F:\\WPF实例\\bin\\Debug\\
示例说明:取得Debug目录并且带斜杠

方式二 通过管理应用程序

//获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。
string str_3 = System.Windows.Forms.Application.StartupPath; 

示例结果:F:\\WPF实例\\bin\\Debug
示例说明:取得Debug目录不带斜杠

//获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。
string str_4 = System.Windows.Forms.Application.ExecutablePath;

示例结果:F:\\WPF实例\\bin\\Debug\\WPF实例.EXE
示例说明:取得Debug目录下可执行程序EXE的完整路径

方式三 本地系统进程

//获取当前进程模块的完整路径。
string str_5 = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;

示例结果(调试状态):F:\\WPF实例\\bin\\Debug\\WPF实例.vshost.exe
示例结果(非调试状态):F:\\WPF实例\\bin\\Debug\\WPF实例.exe
示例说明:取得Debug目录下可执行程序EXE的完整路径

方式四 根据当前环境和平台获取信息

//获取或设置当前工作目录的完全限定路径。
string str_6 = System.Environment.CurrentDirectory; 

示例结果:F:\\WPF实例\\bin\\Debug
示例说明:取得Debug目录不带斜杠

//通IO的通过目录和子目录的静态方法
string str_8 = System.IO.Directory.GetCurrentDirectory();

示例结果:F:\\WPF实例\\bin\\Debug
示例说明:取得Debug目录不带斜杠

 

二、WPF获取程序集详细信息

程序集设置图如下:

方式一 使用FileVersionInfo

string filePath = System.Windows.Forms.Application.ExecutablePath;
var versionInfo = System.Diagnostics.FileVersionInfo.GetVersionInfo(filePath);
var FileName = versionInfo.FileName;                    //"F:\\WPF实例\\bin\\Debug\\WPF实例.EXE"
var FileDescription = versionInfo.FileDescription;      //"WPF实例"
var ProductName = versionInfo.ProductName;              //"WPF实例"
var CompanyName = versionInfo.CompanyName;              //"Micro"
var FileVersion = versionInfo.FileVersion;              //"5.6.7.8"
var ProductVersion = versionInfo.ProductVersion;        //"5.6.7.8"
var ProductMajorPart = versionInfo.ProductMajorPart;    //5
var ProductMinorPart = versionInfo.ProductMinorPart;    //6
var ProductBuildPart = versionInfo.ProductBuildPart;    //7
var ProductPrivatePart = versionInfo.ProductPrivatePart;//8
// 通常版本号显示为「主版本号.次版本号.生成号.专用部件号」
var Version = String.Format("{0}.{1}.{2}.{3}", ProductMajorPart, ProductMinorPart, ProductBuildPart, ProductPrivatePart);
var Language = versionInfo.Language;                    //"语言中性"
var OriginalFilename = versionInfo.OriginalFilename;    //"WPF实例.exe"
var LegalCopyright = versionInfo.LegalCopyright;        //"Copyright ©  2018"

方式二 利用反射取得程序集信息

string filePath = System.Windows.Forms.Application.ExecutablePath;
System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFile(filePath);
var assemblyName = assembly.GetName();
string str_20 = assemblyName.Name.ToString();     //WPF实例
string str_21 = assemblyName.FullName.ToString(); //WPF实例, Version=1.2.3.4, Culture=neutral, PublicKeyToken=null
string str_24 = assemblyName.Version.ToString();  //1.2.3.4
string str_25 = assemblyName.Version.Major.ToString();          //1.2.3.4
string str_26 = assemblyName.Version.Minor.ToString();          //1.2.3.4
string str_27 = assemblyName.Version.Build.ToString();          //1.2.3.4
string str_28 = assemblyName.Version.MajorRevision.ToString();  //1.2.3.4

方式三 根据当前的程序集获取信息

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
string name = assembly.GetName().Version.ToString();

方式四、获取程序集元数据, 个人推荐使用如下

System.Reflection.AssemblyCopyrightAttribute copyright = (System.Reflection.AssemblyCopyrightAttribute)
System.Reflection.AssemblyCopyrightAttribute.GetCustomAttribute(System.Reflection.Assembly.GetExecutingAssembly(),typeof(System.Reflection.AssemblyCopyrightAttribute));
System.Reflection.AssemblyDescriptionAttribute description = (System.Reflection.AssemblyDescriptionAttribute)
System.Reflection.AssemblyDescriptionAttribute.GetCustomAttribute(System.Reflection.Assembly.GetExecutingAssembly(),typeof(System.Reflection.AssemblyDescriptionAttribute));
string str_30 = description.Description;                        // 示例描述
string str_31 = copyright.Copyright;                            // Copyright ©  2018
string str_32 = System.Windows.Forms.Application.ProductVersion;// 5.6.7.8*/

  

目录
相关文章
|
3月前
|
区块链 C# 存储
链动未来:WPF与区块链的创新融合——从智能合约到去中心化应用,全方位解析开发安全可靠DApp的最佳路径
【8月更文挑战第31天】本文以问答形式详细介绍了区块链技术的特点及其在Windows Presentation Foundation(WPF)中的集成方法。通过示例代码展示了如何选择合适的区块链平台、创建智能合约,并在WPF应用中与其交互,实现安全可靠的消息存储和检索功能。希望这能为WPF开发者提供区块链技术应用的参考与灵感。
62 0
|
3月前
|
开发者 C# Windows
WPF与游戏开发:当桌面应用遇见游戏梦想——利用Windows Presentation Foundation打造属于你的2D游戏世界,从环境搭建到代码实践全面解析新兴开发路径
【8月更文挑战第31天】随着游戏开发技术的进步,WPF作为.NET Framework的一部分,凭借其图形渲染能力和灵活的UI设计,成为桌面游戏开发的新选择。本文通过技术综述和示例代码,介绍如何利用WPF进行游戏开发。首先确保安装最新版Visual Studio并创建WPF项目。接着,通过XAML设计游戏界面,并在C#中实现游戏逻辑,如玩家控制和障碍物碰撞检测。示例展示了创建基本2D游戏的过程,包括角色移动和碰撞处理。通过本文,WPF开发者可更好地理解并应用游戏开发技术,创造吸引人的桌面游戏。
182 0
|
3月前
|
C#
WPF/C#:数据绑定到方法
WPF/C#:数据绑定到方法
43 0
|
3月前
|
C#
WPF/C#:程序关闭的三种模式
WPF/C#:程序关闭的三种模式
61 0
|
3月前
|
存储 搜索推荐 C#
WPF/C#:让绘制的图形可以被选中并将信息显示在ListBox中
WPF/C#:让绘制的图形可以被选中并将信息显示在ListBox中
43 0
|
5月前
|
C#
WPF/C#:程序关闭的三种模式
WPF/C#:程序关闭的三种模式
78 3
|
Oracle 数据管理 关系型数据库
WPF实验室信息系统源码,LIS源码
检验报告集中管理: 主要包含申请单详细信息、申请检验组合信息、申请单列表数据、以及结构数据等4四功能模块。可在此模块中查看检验结果,进行检验报告预览。
152 0
WPF实验室信息系统源码,LIS源码
|
C#
WPF防止程序多次运行
WPF防止程序多次运行
220 0
WPF界面无法正常显示(资源引用,如转换器),但程序正常运行
WPF界面无法正常显示(资源引用,如转换器),但程序正常运行
WPF界面无法正常显示(资源引用,如转换器),但程序正常运行
WPF从外部文件或者程序集加载样式或其他静态资源
WPF从外部文件或者程序集加载样式或其他静态资源
WPF从外部文件或者程序集加载样式或其他静态资源