使用C#设置和LocalFileSettingsProvider时,公司名称中的下划线是什么意思?

4
我注意到在使用Windows Forms应用程序创建的Settings对象时,程序集信息中“公司名称”字段中的任何空格都会被下划线替换为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

引用曾在微软工作的某位人士

<公司名称>通常是由AssemblyCompanyAttribute指定的字符串(需要注意的是,如果该字符串太长会被截断,并且如果在程序集上没有指定,则有一个回退过程)。

以及

问:为什么路径如此晦涩?有没有办法改变/自定义它?

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

LocalFileSettingsProvider不提供更改存储设置的文件的方法。请注意,提供程序本身首先并不确定配置文件位置-这是配置系统的工作。如果由于某种原因需要将设置存储在不同的位置,则推荐的方法是编写自己的SettingsProvider。这很容易实现,您可以在.NET 2.0 SDK中找到示例。但是请记住,您可能会遇到上述相同的隔离问题。

这可能会给出一些解释的提示。

因此,其他应用程序可能已经使用了支持空格的单独设置提供程序。

默认的.NET设置提供程序的限制也在此处提到:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接