3
전적으로 잃어버린 일부 도움을 요청하고 싶습니다.Powershell을 사용하여 .csproj 파일의 특정 노드에있는 노드 목록
.csproj 파일의 특정 부분에있는 노드에 적절한 데이터가 들어 있는지 확인하고 싶습니다. 아래의 xml 스 니펫에서 "Debug | x64"프로필에 속한 PropertyGroup 아래의 "title"값을 되돌리고 싶습니다.
은 csproj 파일 조각은
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
...
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<!-- nuget stuff -->
<title>Pet Project</title>
</PropertyGroup>
여기
내 파워 쉘 코드 :
function GetConfigPlatformNodeFromProjectFile($projectFile, $nodeIdentifier) {
[xml] $pFile = Get-Content $projectFile
$ns = New-Object System.Xml.XmlNamespaceManager -ArgumentList $pFile.NameTable
$ns.AddNamespace("ns", $pFile.Project.GetAttribute("xmlns"))
$nodes = $pFile.SelectNodes("//ns:Project/PropertyGroup[contains(@Condition,'Debug|x64')]", $ns)
foreach($node in $nodes) {
write-Host "node... " $node
}
}
문제는 $ 노드가 될 것입니다 항상 0 여기 기사에 따르면 그것은해야 뭔가 이상 포함 . 경로는 정상입니다. 나는 여러 번 점검했다. xmlns 속성이 올바르게 반환됩니다. 문제는 xpath 자체와 네임 스페이스라고 생각하지만 다른 XPath 도구로 여러 번 확인했습니다.
이 경우 내가 뭘 잘못하고 있는지 알 수 없습니다.
미리 도움 주셔서 감사합니다.
András
아주 좋은 것처럼 보입니다! 감사! 반면에 xpath를 사용할 필요는 없으며 테스트 엔지니어이기 때문에 많은 경험이 있습니다. 나는 시험을 볼 것이고 당신의 대답은 받아 들여질 것입니다. – SayusiAndo
오류가 발생합니다. 입력 이름 "조건"을 속성으로 확인할 수 없습니다. –