gpt4 book ai didi

powershell - 如何从 powershell 将新的 PropertyGroup 添加到 csproj

转载 作者:行者123 更新时间:2023-12-02 09:00:38 26 4
gpt4 key购买 nike

我有以下 ps1 文件。该文件存在三个问题。

Q1。如何在XML中使用单引号和双引号?我用谷歌搜索了一下,发现我需要添加一个额外的单引号。我尝试过但没有成功。

第二季度。当我将新的 PropertyGroup 作为子项附加到项目节点时,出现“类型错误”错误。我该如何解决它。

第三季度。我可以将多个 PropertyGroup 附加到项目节点吗?

$dir = "C:\Work\scripttest\output\"
$ns = @{ defaultNamespace = "http://schemas.microsoft.com/developer/msbuild/2003" }

$configs = [xml]"<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Dev-1|AnyCPU'">
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
";

Get-ChildItem $dir *.csproj -recurse |
% {
$content = [xml](gc $_.FullName);
$project = $content.Project;
$project
$project.AppendChild($configs);
# $content.Save($_.FullName);
}

提前致谢!

最佳答案

问题1:powershell中的转义字符是`而不是引号。请记住,您还应该转义 $ 符号

Q2:您遇到问题,因为 $project.AppendChild();XmlNode 而您的 $configs 是 XmlDocument

Q3:可以,但不确定 MsBuild 是否会满意

这是脚本本身:

$dir = "C:\Work\scripttest\output\"
$ns = @{ defaultNamespace = "http://schemas.microsoft.com/developer/msbuild/2003" }

$configs = [xml] "<PropertyGroup Condition=`"'`$(Configuration)|`$(Platform)' == 'Dev-1|AnyCPU'`">
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>"

Get-ChildItem $dir *.csproj -recurse |
% {
$content = [xml](gc $_.FullName);
$importNode = $content.ImportNode($configs.DocumentElement, $true)
$project = $content.Project;
$project
$project.AppendChild($importNode);
# $content.Save($_.FullName);
}

如您所见,我必须先导入 Node,因为它来自另一个文档

关于powershell - 如何从 powershell 将新的 PropertyGroup 添加到 csproj,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9991688/

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