创建一个显示更新通知的NuGet包
我正在创建一个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
相当烦人:当我打开项目时,它隐藏在“准备解决方案”对话框后面,直到我点击确定才完成操作。
最后,我发现没有比通过init.ps1
文件更好的方式来显示通知。
我还发现只有在包管理器控制台可见的情况下才运行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包的更新。 您也可以跨多个Feed跟踪。
可能有点矫枉过正,但它会完成这项工作。 您还可以通过电子邮件收到通知,咆哮或推出自己的通知机制。
这个插件的说明如下: http : //wolfpackcontrib.codeplex.com/wikipage? title = WolfPack.Contrib.Checks.NuGet&referringTitle = Home
上述就是C#学习教程:创建一个显示更新通知的NuGet包分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
- 真的没什么不对的……
- 您可以使用Write-Host将其推送到包管理器控制台。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1002173.html