如何获取.NET应用程序设置文件config的路径

如何获取.NET应用程序设置文件config的路径,第1张

最近在学习NET的时,需要在客户端软件中保存用户的一些设置,比如是否在登录框中保存上次登录名等信息,就用到了NET中的应用程序设置功能。如果使用用户范围的设置,程序会在磁盘上创建userconfig用来存储修改后设置值,对 userconfig所在的文件夹,我产生了一些兴趣,并做了一些研究。现举个例子来说明:

C:/Documents and Settings/Admin/Local Settings/Application Data/Microsoft/testexe_Url_3ypvtlafqkef0gkp1kl5i2idjssaxajb/1000/userconfig

其中

“C:/Documents and Settings/Admin/Local Settings/Application Data”是LocalApplicationData特殊文件夹

“Microsoft”程序集的厂商名称

“Admin”是当前Windows用户名

“testexe”是程序集友好名称

“1000”是程序集版本

“userconfig”是存储用户配置信息的文件,该文件举例如下:

“Url_3ypvtlafqkef0gkp1kl5i2idjssaxajb”该字符串是将程序集的厂商信息、版本信息、绝对路径进行哈希计算,得到的唯一值,可避免不同的程序生成相同的文件路径。

如果要想通过编程的方式对userconfig文件做一些灵活的控制,就必须得到该文件的绝对路径,为了获取NET生成userconfig唯

一路径的方法,我使用Reflector反编译了SystemConfig程序集,终于得到了其中的方法,做了一些简化。现做一些介绍:

(1)ClientConfigPaths类,只有一个public方法GetUserConfigFilePath,此方法即可获取userconfig的绝对路径;

(2)StringUtil类,一个辅助类,用来做一些字符串 *** 作

(3)使用方法:

ClientConfigPaths ccp = new ClientConfigPaths();

textBox1Text = ccpGetUserConfigFilePath();

是为wpf编写的程序,所以必须用wpf打开或者引用这几个空间,这三个空间是wpf项目必须引用的空间。可以增加引用即可,但该项目极可能是wpf。也可能是forms或web编程中调用了wpf,所以必须要增加这三个空间的引用。

Net Framework 中提供了反射机制,可以再加载程序运行时,动态获取和加载程序集,并且可以获取到程序集的信息

在程序集中,包含模块(Module),模块包含类型,类型包含成员,提供反射,我们可以查看到一个程序集的路径,命名空间,类。我们还可以对其进行 *** 作

可以对程序集的类进行实例化,掉用类中的方法等,就跟我们普通使用程序集一样

反射机制通常有下面一些用途

使用 Assembly 定义和加载程序集,加载在程序集清单中列出的模块,以及从此程序集中查找类型并创建该类型的实例。

使用 Module 发现以下信息:包含模块的程序集以及模块中的类等。 您还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。

使用 ConstructorInfo 发现以下信息:构造函数的名称、参数、访问修饰符(如 public 或 private)和实现详细信息(如 abstract 或 virtual)等。 使用 Type 的 GetConstructors 或 GetConstructor 方法来调用特定的构造函数。

使用 MethodInfo 发现以下信息:方法的名称、返回类型、参数、访问修饰符(如 public 或 private)和实现详细信息(如 abstract 或 virtual)等。 使用 Type 的 GetMethods 或 GetMethod 方法来调用特定的方法。

使用 FieldInfo 发现以下信息:字段的名称、访问修饰符(如 public 或 private)和实现详细信息(如static)等;并获取或设置字段值。

使用 EventInfo 发现以下信息:事件的名称、事件处理程序数据类型、自定义特性、声明类型和反射类型等;并添加或移除事件处理程序。

使用 PropertyInfo 发现以下信息:属性的名称、数据类型、声明类型、反射类型和只读或可写状态等;并获取或设置属性值。

使用 ParameterInfo 发现以下信息:参数的名称、数据类型、参数是输入参数还是输出参数,以及参数在方法签名中的位置等。

当您在一个应用程序域的仅反射上下文中工作时,请使用 CustomAttributeData 来发现有关自定义特性的信息。 通过使用 CustomAttributeData,您不必创建特性的实例就可以检查它们。

微软官方解释:>

可以通过多种方式将程序集加载到应用程序域中。推荐方式是使用SystemReflectionAssembly类的static(在 Visual Basic 中为Shared)Load方法。加载程序集的其他方式包括:Assembly类的LoadFrom方法加载已给定其文件位置的程序集。通过此方法加载程序集将使用不同的加载上下文。ReflectionOnlyLoad和ReflectionOnlyLoadFrom将程序集加载到仅反射上下文中。注意仅反射上下文是 NET Framework 20 版中的新增功能。诸如CreateInstance方法和AppDomain类的CreateInstanceAndUnwrap之类的方法可将程序集加载到应用程序域中。Type类的GetType方法可加载程序集。SystemAppDomain类的Load方法可以加载程序集,但该方法主要用于 COM 互 *** 作性。不应使用该方法将程序集加载到除从其调用该方法的应用程序域以外的其他应用程序域。注意从 NET Framework 20 版开始,对于版本号高于当前已加载运行库的 NET Framework 版本,运行库将不加载由其进行编译的程序集。这同样适用于主版本号和次版本号的组合。可以指定在应用程序域间共享来自已加载程序集的实时 (JIT) 编译代码的方式。有关更多信息,请参见应用程序域和程序集。示例下面的代码将名为exampleexe或exampledll的程序集加载到当前应用程序域中,从该程序集获取名为Example的类型,为该类型获取名为MethodA的无参数方法,然后执行该方法。有关从所加载程序集中获取信息的完整讨论,请参见动态加载和使用类型。

以上就是关于如何获取.NET应用程序设置文件config的路径全部的内容,包括:如何获取.NET应用程序设置文件config的路径、.dll的.NET Framework 程序集、C#中  什么是反射机制等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9318944.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存