В общих настройках значения хранятся в паре «Значение ключа», поэтому, если вы просто сохраните отредактированное значение с соответствующим ключом, предыдущие значения будут переопределены, так как вы уже получаете массив заметок, вы можете сделать одну вещь, сохранить список массивов в новом ArrayList и обновите отредактированное значение этого индекса, из которого вы получаете Notes, конвертируйте новый arrayList с помощью Gson и сохраните его в общих настройках.
Для большого объема конфигурации, которая необходима нескольким приложениям, я поместил бы эту конфигурацию в центральный репозиторий, например, базу данных, файл в общем месте.
Для использования различных версий конфигурационного файла для различных сред создайте конфигурацию сборки для каждой из различных сред и файла конфигурации, названного в честь среды, например:
производство production.app.config тестирует test.app.config
Можно затем использовать пред событие сборки для копирования корректной конфигурации по значению по умолчанию app.config в проекте. Это будет затем скопировано в Ваш выходной каталог как нормальное.
Пред событие сборки выглядел бы подобным вышеупомянутому, просто использовать $ (Конфигурация) для получения соответствующего файла для среды, которую Вы хотите.
Вы могли объединиться, это с вышеупомянутым для копирования полного встраивает определенные файлы конфигурации в каждый проект.
Вы могли использовать событие Постсборки (Свойства-> События Сборки) на Ваших "дочерних" проектах скопировать файл конфигурации от основного проекта до других, как это:
copy /Y c:\path\to\master\project\app.config $(TargetPath).config
exit 0
("Выход 0" как последняя строка предотвращает ошибку сборки).
Чтобы иметь отдельные файлы конфигурации для различных целей сборки ("ВЫПУСК", "ОТЛАДКА", и т.д.), можно отредактировать .csproj файл (или .vbproj) в NOTEPAD.EXE для добавления тега AppConfig для каждой из целевых групп, как это:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>.\bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<AppConfig>debug.app.config</AppConfig>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>.\bin\Devel\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<AppConfig>release.app.config</AppConfig>
</PropertyGroup>
Заметьте новое <AppConfig> теги, существующие в каждой группе.
Вместо добавления <add>
элементы к Вашему <appSettings>
раздел Вашего файла конфигурации, можно добавить a file=
припишите <appSettings>
элемент, чтобы сказать этому загружать те данные из другого файла. Вы могли затем сохранить свои общие настройки в том общем файле.
См. appSettings Элемент (Общая Схема Настроек) в MSDN Library.
Можно также поместить параметры конфигурации в machine.config для совместного использования их среди нескольких приложений. Это делает развертывание более проблематичным все же.
Можно использовать символические ссылки NTFS для совместного использования файла .config .NET. Я видел, как это успешно используется в решении, состоящем из приложения ASP.NET, консольных приложений и т. Д.