带有下划线的应用程序数据文件夹和公司名称

时间:2009-11-03 17:08:28

标签: .net app-config

我的VB.NET 2008,.NET 3.5应用程序正在使用app.config,其设置定义为User。正如所料,它创建了文件夹:

C:\Documents and Settings\<user>\Local Settings\Application Data\<company name>\

在此文件夹中是应用程序存储用户设置的子文件夹。但是,公司名称的文件夹有下划线:

C:\Documents and Settings\<user>\Local Settings\Application Data\This__Is_My_Company\

此目录中的其他任何文件夹都没有下划线,并且看起来很愚蠢。有没有办法告诉应用程序创建名称中没有下划线的文件夹?

更新(2012年3月26日):

这似乎是Windows 7上的一个问题(至少可能是XP,但我已经关闭了XP)。如果我使用.NET Framework创建文件夹,如果它不存在...

Const TEST_FOLDER_PATH As String = "{0}\{1}"

Dim appDataFolderPath As String = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
Dim companyName As String = My.Application.Info.CompanyName

MessageBox.Show(String.Format(TEST_FOLDER_PATH, appDataFolderPath, companyName))

...然后它会在公司名称中生成没有下划线的文件夹路径。奇怪的是,.NET 3.5仍在\ AppData \ Local \中创建自己的文件夹,用户的app.config设置带有下划线。

我最终得到一个带有下划线的文件夹,用于用户的app.config数据,以及一个没有下划线的文件夹,因此我可以告诉我们的第三方拼写检查器在哪里存储user-dictionary.txt文件。看起来我必须对公司名称进行硬编码,以便将所有内容保存到一个文件夹中,或者使用两个文件夹。精彩......

4 个答案:

答案 0 :(得分:2)

默认情况下,LocalFileSettingsProvider类负责在.NET中存储配置设置。它似乎默认为所有托管应用程序添加下划线 - 我在本地设置目录中的几个应用程序中看到它。如果你真的关心这个名字,你可以:

  1. 使用Changing the .NET application configuration file name问题中描述的技术。
  2. 创建您自己的SettingsProvider并让它使用正确的文件名。这听起来像重新发明轮子。
  3. 使用驼峰式外壳作为您的公司名称。

答案 1 :(得分:0)

我会使用反射器来检查将_放在那里的代码,看看它是否有任何ifs

答案 2 :(得分:0)

贵公司名称中是否有空格?我知道文件夹名称中的空格是完全可以接受的,但可能是因为VB 2008试图变得有点过于聪明并“从自己身上拯救你”。

如果情况确实如此,请查看My Project\Settings.designer.vb文件。您可以在其中找到生成名称的代码,并且可以手动修改它。我会检查自己,但直到明天我才能把手放在VB 2008的副本上。 : - )

答案 3 :(得分:0)

AssemblyInfo.cs公司名称有什么用?它有下划线吗?