Powershell을 사용하여 프로젝트 참조의 대규모 편집을 수행하는 csproj 파일 작업 중입니다. 지금까지 나는 다음과 같은 라인을 사용 ProjectReferences에 포함 속성을 편집하는 데 성공했습니다Powershell을 사용한 외과 적 XML 편집
$projectXml = [xml](Get-Content $_.Project.FullName)
Add-TfsPendingChange -edit $_.Project.FullName -ErrorAction Stop
$projectXml | Select-Xml -namespace @{msb = "http://schemas.microsoft.com/developer/msbuild/2003"} -xpath "//msb:ProjectReference[msb:Project='$projectGuid']" | Select-Object -ExpandProperty Node | foreach { $_.Include = "$newPath" }
$projectXml.Save($_.Project.FullName)
이 작동, 그리고 예상대로 적절한 ProjectReferences에 속성을 포함 대체합니다. 그러나 모든 태그를 자체 줄에 서식 지정하는 등 많은 "무해한"변경 사항이 있습니다. <FileUpgradeFlags></FileUpgradeFlags>
는
<FileUpgradeFlags>
</FileUpgradeFlags>
등의 부작용을 가지고 있지 않는이 같은 편집을 수행 할 수있는 방법이 있나요
이됩니까?편집 : 다른 이유로이 게시물을 찾은 분이라면 Select-MsBuildXml은 msbuild 네임 스페이스로 네임 스페이스 매개 변수를 미리로드하고 나중에 노드 속성을 확장하는 Select-Xml을 중심으로 작성한 래퍼 함수입니다. .
추가 공백이 왜 당신에게 문제가되는지 알고 싶습니다. –
주로 변경 사항을 검토하는 데 추가 작업을 생성하고 소스 제어에 불필요한 변경을 생성하기 때문입니다. 병리학적인 경우 VS는 이러한 모든 줄 바꿈 태그를 단일 줄 요소로 다시 형식화하여 다음 번에 csproj 문서가 변경 될 때 모든 내용을 뒤집어서 두 가지가 짜증나는 형식 잡기에 잠기 게됩니다. – bwerks
이 대답을 다른 사람에게 더 잘 적용하려면 Select-MsBuildXml 대신 Select-XML을 사용하여이 작업을 수행 할 수 있습니까? –