gpt4 book ai didi

MSBuild:如何控制分号分隔属性的解析

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

当单个属性包含分号时,在项目组中使用时,MSBuild会自动将属性解析为属性列表。这是我的项目的片段:

 <PropertyGroup>
<ConnectionString>workstation id=.;packet size=4096;Integrated Security=SSPI;data source=.;initial catalog=$(SqlDbName)</ConnectionString>
</PropertyGroup>

<ItemGroup>
<InstallShieldProperties Include="
CONNECTIONSTRING=$(ConnectionString);
Another=$(value)"/>
</ItemGroup>

当任务使用@(InstallShieldProperties)项组时,MSBuild会将ConnectionString属性解析为子集属性列表,因为它包含分号。
    foreach (string property in Properties)
{
// Properties array parsed to pieces
}

我知道我可以更改itemgroup的定界符,但这不会有任何区别。
我试图避免在自定义任务中操纵string []数组。

最佳答案

AFAICS,您可以在$(ConnectionString)属性中转义分号,例如:

<ConnectionString>workstation id=.%3Bpacket size=4096%3B.."</ConnectionString>

或使用某些任务替换“;”在ConnectionString属性中将其设置为'%3B',然后在InstallShieldProperties项中使用该属性。

另一种方法是将自定义任务中的属性类型从string []更改为string,然后按照需要的方式自行拆分。您可以使用引号将连接字符串部分与其他键/值对分开。

或者,如果对您的自定义任务有意义,那么连接字符串可能是一个足够特殊的属性,可以作为单独的任务属性使用。

关于MSBuild:如何控制分号分隔属性的解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1664611/

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