如何使用 PowerShell 获取 Visual Studio 中的项目版本?
How can I get with PowerShell the project version in Visual Studio?
我正在编写一个简单的 PowerShell
脚本,用于在 Post-build
事件上创建 NuGet
包。为此,我想将包版本自动设置为项目版本。目前它在我的命令中被硬编码:
nuget pack .\MyProject.csproj -properties configuration=release -version 1.0.0 -outputdirectory .\NuGet\Packages
有没有办法把上面的命令改成这样(伪代码):
var currentVersion = Get-ProjectVersion();
nuget pack .\MyProject.csproj -properties configuration=release -version $currentVersion$ -outputdirectory .\NuGet\Packages
然后将相同版本的包推送到NuGet
服务器?
nuget push .\MyProject.$currentVersion$.nupkg -configfile .\NuGet.config
您可以通过从 Assembly.cs
获取项目版本来完成此操作
function Get-ProjectVersion([string] $ProjectName)
{
$project = Get-Project -Name $ProjectName
$assemblyPath = $project.ProjectItems.Item("Properties").ProjectItems.Item("AssemblyInfo.cs").Properties.Item("FullPath").Value
$assemblyInfo = Get-Content -Path $assemblyPath
if (!$assemblyInfo)
{
return $null
}
$versionMatches = [regex]::Match($assemblyInfo, "\[assembly\: AssemblyVersion\(`"((\d+)\.(\d+)\.(\d+)\.?(\d*)){1}`"\)\]")
if (!$versionMatches -or !$versionMatches.Groups -or $versionMatches.Groups.Count -le 0)
{
return $null
}
return $versionMatches.Groups[1].Value
}
这样调用和使用
$currentVersion = Get-ProjectVersion -ProjectName "MyProject"
nuget pack ".\MyProject.csproj" -properties "configuration=release" -version "$currentVersion" -outputdirectory ".\NuGet\Packages"
nuget push ".\MyProject.$currentVersion.nupkg" -configfile ".\NuGet.config"
警告:
$project = Get-Project -Name $ProjectName
只能在 Visual Studio 中的 包管理器控制台 中使用。作为替代方案,您可以将程序集文件位置添加为参数。
我正在编写一个简单的 PowerShell
脚本,用于在 Post-build
事件上创建 NuGet
包。为此,我想将包版本自动设置为项目版本。目前它在我的命令中被硬编码:
nuget pack .\MyProject.csproj -properties configuration=release -version 1.0.0 -outputdirectory .\NuGet\Packages
有没有办法把上面的命令改成这样(伪代码):
var currentVersion = Get-ProjectVersion();
nuget pack .\MyProject.csproj -properties configuration=release -version $currentVersion$ -outputdirectory .\NuGet\Packages
然后将相同版本的包推送到NuGet
服务器?
nuget push .\MyProject.$currentVersion$.nupkg -configfile .\NuGet.config
您可以通过从 Assembly.cs
获取项目版本来完成此操作function Get-ProjectVersion([string] $ProjectName)
{
$project = Get-Project -Name $ProjectName
$assemblyPath = $project.ProjectItems.Item("Properties").ProjectItems.Item("AssemblyInfo.cs").Properties.Item("FullPath").Value
$assemblyInfo = Get-Content -Path $assemblyPath
if (!$assemblyInfo)
{
return $null
}
$versionMatches = [regex]::Match($assemblyInfo, "\[assembly\: AssemblyVersion\(`"((\d+)\.(\d+)\.(\d+)\.?(\d*)){1}`"\)\]")
if (!$versionMatches -or !$versionMatches.Groups -or $versionMatches.Groups.Count -le 0)
{
return $null
}
return $versionMatches.Groups[1].Value
}
这样调用和使用
$currentVersion = Get-ProjectVersion -ProjectName "MyProject"
nuget pack ".\MyProject.csproj" -properties "configuration=release" -version "$currentVersion" -outputdirectory ".\NuGet\Packages"
nuget push ".\MyProject.$currentVersion.nupkg" -configfile ".\NuGet.config"
警告:
$project = Get-Project -Name $ProjectName
只能在 Visual Studio 中的 包管理器控制台 中使用。作为替代方案,您可以将程序集文件位置添加为参数。