如何从已构建的OctoPack NuGet包提取版本号并在Layout中显示?
从OctoPack日志/包文件中提取NuGet版本号(排除程序集版本)
嘿,我明白你要的是从OctoPack的执行输出里拿到那个2018.03.26.6654版本号,而且完全不想碰程序集版本(毕竟那俩1.0.0.0和你要的版本没关系)。下面给你几个实用的方法:
方法1:手动快速提取
直接从你提供的日志里找这行:
OctoPack: 成功创建包'C:\pathToMySolution\MyProject\obj\octopacked\MyProject. 2018.03.26.6654 .nupkg'
版本号就是文件名里MyProject. 和 .nupkg之间的那串数字,直接复制就行,简单粗暴。
方法2:PowerShell脚本自动化解析日志
如果你需要批量或者自动处理日志文件,可以用正则表达式来匹配版本号。比如保存下面的脚本为Extract-OctoVersion.ps1:
# 替换成你的OctoPack日志文件路径 $logPath = "C:\pathToYourLog\octopack.log" $logContent = Get-Content -Path $logPath -Raw # 正则匹配:针对你的包名格式,捕获版本号部分 $versionPattern = 'MyProject\. (\d+\.\d+\.\d+\.\d+) \.nupkg' $versionMatch = [regex]::Match($logContent, $versionPattern) if ($versionMatch.Success) { $targetVersion = $versionMatch.Groups[1].Value Write-Host "✅ 成功提取版本号:$targetVersion" } else { Write-Host "❌ 未在日志中找到匹配的版本号,请检查日志格式或正则表达式" }
运行这个脚本就会自动输出你要的版本号,完全和程序集版本不沾边。
方法3:直接读取NuGet包的元数据
如果你已经有生成好的.nupkg文件,用NuGet命令行工具直接查版本更靠谱:
# 替换成你的nupkg文件路径 nuget show "C:\pathToMySolution\MyProject\obj\octopacked\MyProject.2018.03.26.6654.nupkg" version
执行后会直接返回2018.03.26.6654,不需要解析日志,准确率更高。
这些方法都完全避开了程序集版本的干扰,只拿你需要的OctoPack生成的NuGet包版本号~
内容的提问来源于stack exchange,提问作者amansinghgusain
相关产品推荐
相关产品推荐

