programing

AssemblyInfo.cs 에서 Assembly 버전 가져오기 및 바꾸기

megabox 2023. 10. 6. 21:01
반응형

AssemblyInfo.cs 에서 Assembly 버전 가져오기 및 바꾸기

업데이트하는 데 사용하는 regex(테스트 전용)가 있습니다.AssemblyVersion로부터AssemblyInfo.cs파일입니다. 하지만 이 값을 끌어내고 대체할 수 있는 가장 좋은 방법이 무엇인지 궁금합니다..cs파일 자체가?

여기 제 추측이 있습니다. 분명히, 작동하지는 않지만 일반적인 생각은 들어맞습니다.좀 더 우아한 것을 기대하고 있었습니다.

Get-Content $file | Foreach-Object{
    $var = $_
    if($var -contains "AssemblyVersion"){
        $temp = [regex]::match($s, '"([^"]+)"').Groups[1].Value.Substring(0, $prog.LastIndexOf(".")+1) + 1234
        $var = $var.SubString(0, $var.FirstIndexOf('"') + $temp + $var.SubString($var.LastIndexOf('"'), $var.Length-1))
    }
}

편집

여기 요청별로 어셈블리에서 업데이트하려는 라인이 있습니다.정보:

[assembly: AssemblyVersion("1.0.0.0")] 

레지렉스를 바꿀 생각은 없지만 시도할 수 있는 것의 흐름을 보여주고 싶습니다.

$path = "C:\temp\test.txt"
$pattern = '\[assembly: AssemblyVersion\("(.*)"\)\]'
(Get-Content $path) | ForEach-Object{
    if($_ -match $pattern){
        # We have found the matching line
        # Edit the version number and put back.
        $fileVersion = [version]$matches[1]
        $newVersion = "{0}.{1}.{2}.{3}" -f $fileVersion.Major, $fileVersion.Minor, $fileVersion.Build, ($fileVersion.Revision + 1)
        '[assembly: AssemblyVersion("{0}")]' -f $newVersion
    } else {
        # Output line as is
        $_
    }
} | Set-Content $path

모든 선에 대해 실행하고 일치하는 선이 있는지 확인합니다.일치하는 것이 발견되면 버전은 a로 저장됩니다.[version]유형을 입력합니다. 필요에 따라 버전을 업데이트합니다.그런 다음 업데이트된 라인을 출력합니다.일치하지 않는 선은 그대로 출력됩니다.

파일을 읽어 들이고 괄호 안에 있기 때문에 파이프라인 처리를 시작하기 전에 핸들을 닫습니다.이렇게 하면 같은 파일에 다시 쓸 수 있습니다.루프의 각 패스는 라인을 출력하고 그 라인은 다음으로 전송됩니다.set-content파일에 답장을 보내려고 합니다.


참고:$var -contains "AssemblyVersion"당신이 기대했던 것처럼 작동하지 않았을 것입니다.-contains는 배열 연산자입니다.-matchregex 지원 사업자임을 알고 계시면 좋겠으니 메타 charact자는 주의하시기 바랍니다.-like "*AssemblyVersion*"또한 작동하며 간단한 와일드카드를 지원합니다.

언급URL : https://stackoverflow.com/questions/36200323/get-and-replace-assemblyversion-from-assemblyinfo-cs

반응형