0
我编辑我的PowerShell脚本,它突然开始给我奇怪的错误:术语“-replace”不被识别为cmdlet,函数,脚本文件或可操作的程序的名称
-replace : The term '-replace' is not recognized as the name of a cmdlet, function, script file, or operable program
和
-Get-TfsItemHistory : The term 'Get-TfsItemHistory' is not recognized as the name of a cmdlet, function, script file, or operable program
我就明白了第二个错误,但-replace?真奇怪。
GET-TfsItemHistory中引用的文件中使用VersionsCache.ps1
Script.ps1:
#For all projects, that has been changed since last build updates [AssemblyVersion], [AssemblyFileVersion], and [AssemblyInformationalVersion], attributes in all assemblyinfo.cs files.
$rootDir = "C:\Projects\UI\Evis\Dev"
$version = "2.0.0"
$buildType = "beta"
$currentChangeset = 1789
$versionsCacheFile ="C:\Projects\UI\Evis\versionsCache.txt"
. "$rootDir\VersionsCache.ps1"
$projects = Get-ChildItem "$rootDir\*.csproj" -Recurse;
function UpdateAssemblyInfo{
Param ([string]$dir, [string]$assemblyVersion, [string]$assemblyInformationalVersion)
$assemblyVersionPattern = 'AssemblyVersion\("[0-9]+(\.([0-9]+|\*)){1,3}"\)'
$assemblyFileVersionPattern = 'AssemblyFileVersion\("[0-9]+(\.([0-9]+|\*)){1,3}"\)'
$assemblyInformationalVersionPattern = 'AssemblyInformationalVersion\(.*\)'
$newVersion = 'AssemblyVersion("' + $assemblyVersion + '")';
$newFileVersion = 'AssemblyFileVersion("' + $assemblyVersion + '")';
$newInformationalVersion = 'AssemblyInformationalVersion("' + $assemblyInformationalVersion + '")';
$assemblyInfoFile = Get-ChildItem $dir -Filter assemblyinfo.cs -Recurse -Depth 1
$assemblyInfoContent = (Get-Content $assemblyInfoFile.FullName)
-replace $assemblyVersionPattern, $newVersion
-replace $assemblyFileVersionPattern, $newVersion
if ($assemblyInfoContent -match $assemblyInformationalVersionPattern)
{
$assemblyInfoContent = $assemblyInfoContent -replace $assemblyInformationalVersionPattern, $newInformationalVersion
}
else{
$assemblyInfoContent = $assemblyInfoContent + "`r`n[assembly: $newInformationalVersion]"
}
$assemblyInfoContent| Out-File $assemblyInfoFile.FullName
}
$publishedChangesetsCache = Load-Versions $versionsCacheFile
foreach ($project in $projects)
{
$projectDir = $project.Directory.FullName;
$assemblyInfo = Get-ChildItem $projectDir -Filter assemblyinfo.cs -Recurse -Depth 1 | select -First 1
Write-Host $projectDir -NoNewLine
$publishedChangesets = GetpublishedChangesets -dir $projectDir -publishedChangesetsCache $publishedChangesetsCache
$latestChangesetId = GetLatestChangeset $dir
Write-Host "changeset: $latestChangesetId"
if (IsChangedSinceLastBuild $latestChangesetId $publishedChangesets){
$publishedChangesets.Insert(0,$currentChangeset)
}
$changesetToPublish = $publishedChangesets[0]
$informationalVersion = "$version.$changesetToPublish"
if ($buildType -ne ""){
$informationalVersion = "$version-$buildType$changesetToPublish"
}
UpdateAssemblyInfo $projectDir -assemblyVersion "$version.$changesetToPublish" -assemblyInformationalVersion $informationalVersion
}
Save-Versions $publishedChangesetsCache -file versionsCacheFile
我想我有一些语法错误,因为它昨天,但我想不通在哪里。