Загрузить другой XML-файл MyExeName.config (файл параметров проекта) в файл по умолчанию?
Я вижу, что этот вопрос задавали много раз о настройках приложения в стиле ASP.NET, где загрузка выполняется, а затем код содержит вызовы ConfigurationManager.AppSettings["MySettingHere"]
..
..но мое приложение WinForms не использует этот метод. Вместо этого он использует маршрут настроек проекта (т.е. я звоню Properties.Settings.Default.MySettingName
чтобы получить мое значение, и я редактирую свои настройки, получая свойства проекта и выбирая вкладку "Настройки"). App.config в виде файла присутствует в корне проекта / решения, но есть также Settings.settings и Settings.Designer.cs и я думаю, что они используются и преобразованы в скомпилированный код, который получает данные
По сути, Visual Studio предоставляет безопасную оболочку типа для процесса загрузки / сохранения / получения параметров, и я хотел бы указать путь к файлу настроек для загрузки, а не привязывать его к файлу MyExeName.config по умолчанию. из каталога приложения
2 ответа
Единственное решение, которое я нашел до сих пор, - это решение бедного человека..
Когда мы используем вкладку "Настройки" в свойствах проекта, решение получит файл Settings.Settings, Settings.Designer.cs в узле "Свойства" проекта и, возможно, также app.config в корневом каталоге проекта. Изменения в этих файлах, похоже, напрямую копируются / обновляются / синхронизируются самой VS. Он также поддерживает некоторый код в фоновом режиме, чтобы обеспечить типизированный доступ к этим настройкам. Вероятно, он основан на Configmanager.AppSetings["propertyName"], но поскольку VS используется для установки свойства, и вы говорите, что это int (или что-то еще), тогда VS может написать код-обертку, который представляет пространство имен / класс / цепочку членов ProjectNamespace.Properties.Settings.Default.PROPERTYNAME
По-видимому, этот код основан на файле настроек, который называется THE_EXE_NAME.exe.config и хранится вместе с самим EXE-файлом....так я просто беру файл настроек, который хочу использовать, скопирую его поверх того, который хранится на диске и вызовите ProjectNamespace.Properties.Settings.Default.Reload(), чтобы перезагрузить значения, которые я хочу использовать, из нового файла. Я могу придумать множество причин, почему это не идеально, но это все, что я смог придумать
Я предполагаю, что вы хотите загрузить пользовательский файл конфигурации из нужного места, а не загружать конфигурацию по умолчанию, а затем попробуйте это,
ПРИМЕЧАНИЕ. В проекте не может быть более одного файла App.config. Приложение будет использовать файл конфигурации с именем YourExcecutable.exe.config, который по умолчанию является файлом App.config. Но вы можете иметь несколько конфигурационных файлов и загружать их по мере необходимости, используя код. Но вы не можете держать их всех загруженными одновременно. Вы можете переключаться между файлами только по мере необходимости.
System.Configuration.ConfigurationFileMap fileMap = new ConfigurationFileMap("path to new file");
System.Configuration.Configuration configuration = System.Configuration.ConfigurationManager.OpenMappedMachineConfiguration(fileMap);
OR
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"Config file path");