存储nuget包的设置.有更好的方法吗
本文关键字:更好 方法 设置 nuget 存储 | 更新日期: 2023-09-27 17:57:46
我有一个控制台应用程序,可以通过nuget或自己使用。它被安装到NuGet包的工具目录中。该应用程序需要3条"配置"信息。
- 数据库连接字符串
- 文件夹路径
- 还有一个配置选项(字符串)
目前,我将这些配置值存储在exe旁边的一个文本文件中,该文件名为settings.js,序列化为json。
当应用程序第一次运行时,如果文件不存在,它会创建一个具有默认值的文件。
我将settings.js文件保存在这个位置,这样该文件就会被检查到源代码管理中。
我的问题是关于跨版本维护设置文件。如果你通过nuget更新软件包,一切都很好,除了新版本没有我配置的任何设置,因为有一个为新版本创建的新文件夹。
我已经编写了一个在init.ps1中运行的powershell脚本,从包的上一个版本中提取设置,并且似乎可以工作。然而,这感觉有点脏,我想知道在使用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)安装包时,init.ps1似乎不会运行。这是预期的行为吗?
您可以访问系统吗。环境GetFolderPath?我只需要在ApplicationData特殊文件夹下创建一个文件夹,并将设置存储在那里。