我有console application that is available via nuget或on it's own。它被安装到NuGet包的tools目录中。该应用程序需要3条“配置”信息。
目前,我将这些配置值存储在一个名为settings.js的文件中紧邻exe的文本文件中,序列化为json。
首次运行应用程序时,如果该文件不存在,则会创建一个具有默认值的文件。
我将settings.js文件保存在此位置,以便将文件检入源代码管理中。
我的问题是关于跨版本维护设置文件。 如果您通过nuget进行Update-Package,一切都很有效,除了新版本没有我配置的任何设置,因为为新版本创建了一个新文件夹。
我已经编写了一个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
}
}
此外,使用命令行工具(nuget.exe)安装软件包时,init.ps1似乎无法运行。这是预期的行为吗?
答案 0 :(得分:1)
您可以访问System.Environment.GetFolderPath吗?我只是在ApplicationData特殊文件夹下创建一个文件夹,并将设置存储在那里。