我想在每行末尾用 Windows CRLF 替换以 UTF-8 编码的 AssemblyInfo.cs 中的这些行
<<<<<<< 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
我无法使 -replace 在新线路上工作。但是当仅定位时<<<<<<<\sHEAD
,它匹配并执行替换。
以下所有变体均失败:
<<<<<<<\sHEAD\n\[assembly:
没有错误没有替换<<<<<<<\sHEAD\r\n\[assembly:
没有错误没有替换<<<<<<<\sHEAD
rn\[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)
我错过了什么?为什么不替换?
非常感谢