У меня есть консольное приложение , которое доступно через nuget или самостоятельно .Он устанавливается в каталог инструментов для пакета NuGet.Для приложения требуется 3 элемента информации о конфигурации.
- строка подключения к базе данных
- путь к папке
- еще один параметр конфигурации (строка)
В настоящее время я храню эти значения конфигурации в текстовом файле рядом с exe-файлом в файле settings.js, сериализованном как json.
При первом запуске приложения, если файл отсутствует, он создает его со значениями по умолчанию.
Я храню файл settings.js в этом месте, чтобы файл был проверен в исходном коде.control.
Мой вопрос касается сохранения файла настроек в разных версиях.Если вы обновляете пакет через Nuget, все работает отлично, за исключением того, что у новой версии нет настроек, которые я настроил, потому что для новой версии создана новая папка.
Я написал скрипт powershellзапустить в init.ps1, чтобы вытащить настройки из последней версии пакета, и, кажется, работает.Однако это выглядит немного грязно, и мне интересно, есть ли лучший способ решить эту проблему при использовании nuget для доставки моего приложения.
param($installPath, $toolsPath, $package)
Set-Alias hump (Join-Path $toolsPath hump.exe)
$sorted_list = new-object system.collections.SortedList
$parent_path = Join-Path $installPath ".."
foreach($f in Get-ChildItem $parent_path -Filter Humpback* | Foreach {$_.FullName}){
$sorted_list.Add($f,$f)
}
if($sorted_list.Count -gt 1){
$old_path = $sorted_list.Values[$sorted_list.Count - 2]
$new_path = Join-Path $installPath "tools"
$current_settings = Join-Path $new_path "settings.js"
$has_current_settings = Test-Path $current_settings
if($has_current_settings -eq $false){
$old_settings = Join-Path $old_path "tools\settings.js"
Copy-Item $old_settings $new_path
}
}
Кроме того, init.ps1 не запускается при установкепакет с помощью инструмента командной строки (nuget.exe).Это ожидаемое поведение?