Сохранение настроек для пакета nuget.Есть ли способ лучше? - PullRequest
0 голосов
/ 27 мая 2011

У меня есть консольное приложение , которое доступно через 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).Это ожидаемое поведение?

1 Ответ

1 голос
/ 27 мая 2011

Можете ли вы получить доступ к System.Environment.GetFolderPath? Я бы просто создал папку в специальной папке ApplicationData и сохранил там настройки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...