我的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文件。看起来我必须对公司名称进行硬编码,以便将所有内容保存到一个文件夹中,或者使用两个文件夹。精彩......
答案 0 :(得分:2)
默认情况下,LocalFileSettingsProvider类负责在.NET中存储配置设置。它似乎默认为所有托管应用程序添加下划线 - 我在本地设置目录中的几个应用程序中看到它。如果你真的关心这个名字,你可以:
答案 1 :(得分:0)
我会使用反射器来检查将_放在那里的代码,看看它是否有任何ifs
答案 2 :(得分:0)
贵公司名称中是否有空格?我知道文件夹名称中的空格是完全可以接受的,但可能是因为VB 2008试图变得有点过于聪明并“从自己身上拯救你”。
如果情况确实如此,请查看My Project\Settings.designer.vb
文件。您可以在其中找到生成名称的代码,并且可以手动修改它。我会检查自己,但直到明天我才能把手放在VB 2008的副本上。 : - )
答案 3 :(得分:0)
在AssemblyInfo.cs
公司名称有什么用?它有下划线吗?