使用C#设置& LocalFileSettingsProvider

时间:2009-11-11 18:11:06

标签: c# windows winforms

我注意到当使用由Windows窗体应用程序创建的Settings对象时,程序集信息的“Company Name”字段中的任何空格都会被user.config文件路径中的下划线替换。例如,在XP中,user.config文件的路径将类似于:

\Documents and Settings\user\Local Settings\Application Data\Company_Name_Here\App\Version\user.config

但这似乎只发生在我自己的应用程序中。我的机器上安装了很多.NET应用程序,但Application Data下的其他目录名都没有包含下划线(空格被保留)。

是什么给出的?这不是什么大问题,但我只是想知道为什么这似乎只发生在我的应用程序中,如果有办法改变我不知道的这种行为。

1 个答案:

答案 0 :(得分:0)

Quoting在Microsoft工作的人

  

<公司名称> - 通常是AssemblyCompanyAttribute指定的字符串(需要注意的是字符串是必要的,并且必要时会对字符串进行转义和截断,如果未在程序集中指定,则会有回退过程。)

  问:为什么路径如此模糊?有没有办法改变/定制它?

     

答:路径构建算法必须满足安全性,隔离性和鲁棒性方面的某些严格要求。虽然我们尝试通过使用友好的,应用程序提供的字符串尽可能容易地发现路径,但是不可能保持路径完全简单而不会遇到与其他应用程序冲突,欺骗等问题。

     

LocalFileSettingsProvider不提供更改存储设置的文件的方法。请注意,提供程序本身并不首先确定配置文件位置 - 它是配置系统。如果由于某种原因需要将设置存储在其他位置,建议的方法是编写自己的SettingsProvider。这实现起来相当简单,您可以在.NET 2.0 SDK中找到演示如何执行此操作的示例。但请记住,您可能遇到上述相同的隔离问题。

可能会给出一些解释。

因此,其他应用程序可能使用了支持空格的个别设置提供程序。

还提到了默认.NET设置提供程序的限制here

  

每个应用程序设置必须具有唯一的名称;名称可以是不以数字开头的字母,数字或下划线的任意组合,也不能包含空格。可以通过Name属性更改名称。