Я хочу заменить эти строки в моем AssemblyInfo.cs, закодированном в UTF-8, Windows CRLF в конце каждой строки
<<<<<<< HEAD
[assembly: AssemblyVersion("2.0.0.0")]
[assembly: AssemblyFileVersion("2.0.0.0")]
=======
[assembly: AssemblyVersion("1.1.0.0")]
[assembly: AssemblyFileVersion("1.1.0.0")]
>>>>>>> v1_final_release
на эти
[assembly: AssemblyVersion("2.0.0.0")]
[assembly: AssemblyFileVersion("2.0.0.0")]
.Итак, у меня есть скрипт powershell, который будет анализировать все мои файлы и выполнять замену.
Регулярное выражение, которое я готовлю в regex101: это и работает на 101:
<<<<<<<\sHEAD\n\[assembly:\sAssemblyVersion\("2\.0\.0\.0"\)\]\n\[assembly:\sAssemblyFileVersion\("2\.0\.0\.0"\)\]\n=======\n\[assembly:\sAssemblyVersion\("1\.1\.0\.0"\)\]\n\[assembly: AssemblyFileVersion\("1\.1\.0\.0"\)\]\n>>>>>>>\sv1_final_release
Мне не удается заставить -relace работать на новых строках,Но при таргетинге только на <<<<<<<\sHEAD
оно совпадает и производится замена.
Не удалось выполнить все следующие варианты:
<<<<<<<\sHEAD\n\[assembly:
без ошибок без замены <<<<<<<\sHEAD\r\n\[assembly:
без ошибок без замены <<<<<<<\sHEAD
r n\[assembly:
без ошибок без замены, write-host печатает его как <<<<<<<\sHEAD
\[assembly:
Это не о /gm
или (*CRLF)
Моя инструкция PowerShell для информации:
$ConflictVersionRegex = "<<<<<<<\sHEAD\n\[assembly:\sAssemblyVersion\(`"2\.0\.0\.0`"\)\]\n\[assembly:\sAssemblyFileVersion\(`"2\.0\.0\.0`"\)\]\n=======\n\[assembly:\sAssemblyVersion\(`"1\.1\.0\.0`"\)\]\n\[assembly: AssemblyFileVersion\(`"1\.1\.0\.0`"\)\]\n>>>>>>>\sv1_final_release"
$ConflictVersionRegexTest = "<<<<<<<\sHEAD`r`n\[assembly:"
$fileContent = Get-Content($filePath)
$filecontent = $filecontent -replace $ConflictVersionRegexTest, $AssemblyNewVersion
[System.IO.File]::WriteAllLines($filePath, $fileContent, $Utf8NoBomEncoding)
Чего мне не хватает?Почему он не заменяет?
Большое спасибо