Приложение app.config моего приложения Windows С# имеет следующую 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>
После установки установки те же строки соединения существуют в файле projectname.config каталога установки C:\ProgramFiles\ProjectName\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
Это было сохранено долго назад, когда проект был установлен, но при его удалении он не удаляется.
Как я могу внести изменения в С#, чтобы прочитать правильный файл ProjectName.config из установочного dircectory, а не из папок AppData.
При запуске приложения вы можете проверить наличие исходной конфигурации и удалить ее.
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 для создания настраиваемого действия.
Попробуй это
string theConfigFileName ="FilePath";
ExeConfigurationFileMap userConfigFileMap = new ExeConfigurationFileMap() { ExeConfigFilename = theConfigFileName };
Configuration userConfig = ConfigurationManager.OpenMappedExeConfiguration(userConfigFileMap, ConfigurationUserLevel.None);
foreach (var item in userConfig.ConnectionStrings.ConnectionStrings)
{
}