存储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似乎不会运行。这是预期的行为吗?

存储nuget包的设置.有更好的方法吗

您可以访问系统吗。环境GetFolderPath?我只需要在ApplicationData特殊文件夹下创建一个文件夹,并将设置存储在那里。