[英]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
,以避免在安裝較新的軟件包時顯示通知。
我想知道是否
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.