[英]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.