簡體   English   中英

存儲 nuget package 的設置。 有沒有更好的辦法?

[英]Storing settings for a nuget package. Is there a better way?

我有一個控制台應用程序,可通過 nuget或單獨使用 它安裝到 NuGet package 的工具目錄中。 該應用程序需要 3 條“配置”信息。

  • 數據庫連接字符串
  • 文件夾路徑
  • 另一個配置選項(字符串)

目前,我將這些配置值存儲在 exe 旁邊的一個文本文件中,該文件位於名為 settings.js 的文件中,序列化為 json。

當應用程序第一次運行時,如果文件不存在,它會創建一個具有默認值的文件。

我將 settings.js 文件保存在此位置,以便將文件檢入源代碼管理。

我的問題是關於跨版本維護設置文件。 如果您通過 nuget 更新包,一切正常,除了新版本沒有我配置的任何設置,因為為新版本創建了一個新文件夾。

我編寫了一個 powershell 腳本以在 init.ps1 中運行以從 package 的最新版本中提取設置,並且似乎可以正常工作。 然而,這感覺有點臟,我想知道在使用 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
    }
}

此外,使用命令行工具 (nuget.exe) 安裝 package 時,init.ps1 似乎沒有運行。 這是預期的行為嗎?

您可以訪問 System.Environment.GetFolderPath 嗎? 我只需在 ApplicationData 特殊文件夾下創建一個文件夾,並將設置存儲在那里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM