我的C#windows应用程序的app.config具有以下ConnectionString
<connectionStrings>
<add name="DS1" connectionString="Data Source=DataSource1;" providerName="" />
<add name="DS2" connectionString="Data Source=DataSource2;" providerName="" />
<add name="DS3" connectionString="Data Source=DataSource3;" providerName="" />
<add name="DS4" connectionString="Data Source=DataSource4;" providerName="" />
</connectionStrings>
安装安装程序后,安装目录C:\ ProgramFiles \ ProjectName \ ProjectName.config的projectname.config中存在相同的连接字符串。
当我运行应用程序时,我有以下代码来访问连接字符串
foreach (ConnectionStringSettings key in ConfigurationManager.ConnectionStrings)
{
Display ConfigurationManager.ConnectionStrings[key.Name].Name,
}
密钥名称未显示为DS1,DS2,DS3和DS4。
而是正在读取
中的ProjectName.config文件C:\Users\UserName\AppData\Local\VirtualStore\Program Files\ProjectName\ProjectName.exe.config
在项目安装时很久就保存了这个项目但是在卸载时它没有被删除。
如何在C#中进行更改以从安装目录读取正确的ProjectName.config文件,而不是从AppData文件夹中读取。
答案 0 :(得分:0)
试试这个
string theConfigFileName ="FilePath";
ExeConfigurationFileMap userConfigFileMap = new ExeConfigurationFileMap() { ExeConfigFilename = theConfigFileName };
Configuration userConfig = ConfigurationManager.OpenMappedExeConfiguration(userConfigFileMap, ConfigurationUserLevel.None);
foreach (var item in userConfig.ConnectionStrings.ConnectionStrings)
{
}
答案 1 :(得分:0)
在应用启动时,您可以检查是否存在原始配置并将其删除。
string originalConfig = string.Format("C:\Users\{0}\AppData\Local\VirtualStore\Program Files\ProjectName\ProjectName.exe.config", Environment.UserName);
if (System.IO.File.Exists(originalConfig))
{
System.IO.File.Delete(originalConfig);
}
如果您想在卸载期间执行此操作,可以在自定义操作中执行此代码:
System.IO.Directory.Delete("%APPDATA%\ProjectName");
请参阅msdn获取creating a custom action