簡體   English   中英

創建一個顯示更新通知的NuGet包

[英]Create a NuGet package that shows update notifications

我正在創建一個NuGet軟件包,並且我希望該軟件包在存儲庫(這是一個私有存儲庫,而不是正式的NuGet存儲庫)中存在該軟件包的更新時顯示通知。

請注意,我不希望軟件包自動更新(以防新版本可能引起一些問題),而只是通知用戶。

為此,我在包的init.ps1文件中添加了此文件:

param($installPath, $toolsPath, $package, $project)
$PackageName = "MyPackage"
$update = Get-Package -Updates | Where-Object { $_.Id -eq $PackageName }
if ($update -ne $null -and $update.Version -gt $package.Version) {
    [System.Windows.Forms.MessageBox]::Show("New version $($update.Version) available for $($PackageName)") | Out-Null
}

需要檢查$update.Version -gt $package.Version ,以避免在安裝較新的軟件包時顯示通知。

我想知道是否

  1. 此解決方案是可以接受的,或者是否有更好的“標准”方法可以做到這一點(而不是自己開發解決方案)。
  2. 有一種更好的方式來顯示通知,因為MessageBox相當煩人:當我打開項目時,它隱藏在“正在准備解決方案”對話框的后面,並且該操作直到單擊OK才完成。

最后,我發現沒有比通過init.ps1文件更好的顯示通知的方法了。
我還發現只有在Package Manager Console可見的情況下才運行init腳本,這對於此目的而言並不完全理想,但是我仍然找不到更好的東西。

關於通知用戶的方式,我發現了一些方法,以防它們對其他人有用。

param($installPath, $toolsPath, $package, $project)
if ($project -eq $null) {
    $projet = Get-Project
}

$PackageName = "MyPackage"
$update = Get-Package -Updates -Source 'MySource' | Where-Object { $_.Id -eq $PackageName }
# the check on $u.Version -gt $package.Version is needed to avoid showing the notification
# when the newer package is being installed
if ($update -ne $null -and $update.Version -gt $package.Version) {

    $msg = "An update is available for package $($PackageName): version $($update.Version)"

    # method 1: a MessageBox
    [System.Windows.Forms.MessageBox]::Show($msg) | Out-Null
    # method 2: Write-Host
    Write-Host $msg
    # method 3: navigate to a web page with EnvDTE
    $project.DTE.ItemOperations.Navigate("some-url.html", [EnvDTE.vsNavigateOptions]::vsNavigateOptionsNewWindow) | Out-Null
    # method 4: show a message in the Debug/Build window
    $win = $project.DTE.Windows.Item([EnvDTE.Constants]::vsWindowKindOutput)
    $win.Object.OutputWindowPanes.Item("Build").OutputString("Update available"); 
    $win.Object.OutputWindowPanes.Item("Build").OutputString([Environment]::NewLine)
}

我有一個名為“ Wolfpack ”的開源.net監視解決方案,並且其中一個插件可讓您監視對一個或多個NuGet軟件包的更新。 您也可以跨多個提要進行跟蹤。

可能有點過大,但它可以勝任。 您還可以通過電子郵件,咆哮或滾動自己的通知機制獲得通知。

此插件的說明位於: http : //wolfpackcontrib.codeplex.com/wikipage? title=WolfPack.Contrib.Checks.NuGet&referringTitle =Home

  1. 真的沒有錯...
  2. 您可以使用Write-Host將其推送到軟件包管理器控制台。

暫無
暫無

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

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