ConfigurationManager.ConnectionString считывает app.config из другого места

1

Приложение 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.

Теги:
winforms
connection-string

2 ответа

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 для создания настраиваемого действия.

  • 0
    Есть ли способ удалить app.config, хранящийся в appdata, когда я удаляю приложение?
  • 0
    Жесткое кодирование пути может не быть хорошей идеей, потому что каждая система может иметь уникальные пути (в зависимости от ОС)
Показать ещё 1 комментарий
0

Попробуй это

 string theConfigFileName ="FilePath";
 ExeConfigurationFileMap userConfigFileMap = new ExeConfigurationFileMap() { ExeConfigFilename = theConfigFileName };
 Configuration userConfig = ConfigurationManager.OpenMappedExeConfiguration(userConfigFileMap, ConfigurationUserLevel.None);

foreach (var item in userConfig.ConnectionStrings.ConnectionStrings)
{

} 
  • 0
    Есть ли способ удалить app.config, хранящийся в appdata, когда я удаляю приложение?
  • 0
    Как установить / удалить приложение?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню