gpt4 book ai didi

xml - 如何使用PowerShell读取MSBuild PropertyGroup的值?

转载 作者:行者123 更新时间:2023-12-02 23:27:54 25 4
gpt4 key购买 nike

我有以下MSBuild(TestBuild.xml)文件:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
...
<Import Project="folderA\A.targets"/>

<!-- bunch of stuff -->
<PropertyGroup>
<ApplicationName>MyApp</ApplicationName>
<SolutionName>MySolution</SolutionName>
<VersionFile>Version.cs</VersionFile>
<TargetPackageVersion>$(RELEASE_VERSION)</TargetPackageVersion>
<BuildPlatform Condition=" '$(BuildPlatform)' == '' ">x86</BuildPlatform>
<TestAssembliesPattern>*Tests*.dll</TestAssembliesPattern>
...
</PropertyGroup>

<!-- bunch of more stuff -->
<PropertyGroup>
<ConfigurationContentFolder>$(MSBuildProjectDirectory)\Configuration</ConfigurationContentFolder>
<PluginName>ABC</PluginName>
</PropertyGroup>
...
</Project>

我希望能够获得 VersionFile节点的值,在这种情况下,我一直在使用XPath播放 Version.cs,希望以下方法能够起作用:
$xdoc = [xml] $xdoc = get-content ".\TestBuild.xml"
$xdoc.SelectSingleNode("//VersionFile") | select { $_.InnerText }
$xdoc.SelectSingleNode("VersionFile") | select { $_.InnerText }

但是到目前为止,我还没有运气。非常感谢任何帮助。

最佳答案

Xml具有 namespace ,因此您必须限定元素名称。使用Select-Xml评估具有 namespace 的XPath:

$xml = [xml](get-content ".\TestBuild.xml")
$ns = @{ msb = "http://schemas.microsoft.com/developer/msbuild/2003" }
Select-Xml $xml -Namespace $ns -XPath "//msb:VersionFile" | foreach { $_.Node.InnerText }

关于xml - 如何使用PowerShell读取MSBuild PropertyGroup的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28368140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com