gpt4 book ai didi

msbuild - 读取文本文件并拆分 MSBuild 中的每一行

转载 作者:行者123 更新时间:2023-12-01 15:42:41 26 4
gpt4 key购买 nike

我在 MSBuild 中遇到以下问题。我有一个文本文件 (buildsolutions1.txt),其中包含列表(逐行),其中包含我需要构建的所有解决方案以及以逗号分隔的相关开发人员电子邮件:

Common\Common.sln,am@email,com
ExcGw/ExcDataService.sln,pm@email.com;am@email,com;jk@email.com;mk@email.com;Ppp@email.com
MessB/MessB/Message.sln,am@email,comRiskS/RiskS2.sln,jp@email.com;mz@email.com;mk@email.com;jk@email.com;ps@email.com

我需要逐行阅读这个文件,编译每个解决方案,以防万一它失败——发送电子邮件给相关的开发人员

我的想法是创建一个项目组 Lines,其中每个项目都是来自该文件的一行并且它有 2 个元数据值:解决方案——该行的第一部分直到逗号电子邮件——从逗号到行尾的行的第二部分

所以我创建了一个 Property Grroup 和一个目标 ReadSolutions,如下所示。

我逐行读取文件,但我不知道如何为每个行项目设置元数据:
FirstPartOfTheCurrentLine(%(LinesFromFile.Identity))
SecondPartOfTheCurrentLine(%(LinesFromFile.Identity))

此语法无效:
%(LinesFromFile.Identity.Split(',')[0])
%(LinesFromFile.Identity.Split(',')[1])

也许有人会知道如何正确设置元数据,或者可能有其他方法来完成这项任务。谢谢

代码如下:

    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="4.0" DefaultTargets="CoreBuild">

<PropertyGroup>
<TPath>$(MSBuildProjectDirectory)\..\tools\MSBuild Extension Pack Binaries\MSBuild.ExtensionPack.tasks</TPath>
</PropertyGroup>
<Import Project="$(TPath)"/>

<PropertyGroup>
<!-- Default working folder -->
<RootFolder Condition=" '$(RootFolder)' == '' " >c:\ff\</RootFolder>
<BuildSolutionsFile >buildsolutions1.txt</BuildSolutionsFile>
<BuildSolutionsFileFullPath >$(RootFolder)$(BuildSolutionsFile)</BuildSolutionsFileFullPath>
</PropertyGroup>


<Target Name="ReadSolutions">
<Message Text=" Build solutions text file is : $(BuildSolutionsFileFullPath)" />

<!—Read the file and store each line as an item into LinesFromFile item group-->
<ReadLinesFromFile
File="$(BuildSolutionsFileFullPath)" >
<Output
TaskParameter="Lines"
ItemName="LinesFromFile"/>
</ReadLinesFromFile>

<Message Text="Current line : %(LinesFromFile.Identity)" />
<Message Text="===================================" />

<!—Create the other item group where each item is a line and has the metadata Solution and Emails -->

<ItemGroup>
<Lines Include="%(LinesFromFile.Identity)" >
<Solution>FirstPartOfTheCurrentLine(%(LinesFromFile.Identity))</Solution>
<Emails>SecondPartOfTheCurrentLine(%(LinesFromFile.Identity)) </Emails>

</Lines>

</ItemGroup>


<Message Text="All the Lines :%0A@(Lines,'%0A')" />



</Target>

最佳答案

这是我使用的数据:

Common\Common.sln,am@email,com 
ExcGw/ExcDataService.sln,pm@email.com;am@email,com;jk@email.com;mk@email.com;Ppp@email.com
MessB/MessB/Message.sln,am@email,com
RiskS/RiskS2.sln,jp@email.com;mz@email.com;mk@email.com;jk@email.com;ps@email.com

稍微修改了您的示例以包含第四个解决方案的换行符。

修改后的代码:

<ItemGroup>
<Lines Include="@(LinesFromFile)" >
<Solution>$([System.String]::Copy('%(LinesFromFile.Identity)').Split(',')[0])</Solution>
<Emails>$([System.String]::Copy('%(LinesFromFile.Identity)').Split(',')[1])</Emails>
</Lines>
</ItemGroup>
<Message Text="Solutions to Emails-> %(Lines.Solution) -> %(Lines.Emails)" />

我们正在将值复制到一个属性,这样我们就可以使用属性函数来拆分值并获得我们需要的部分。

这是输出:

Solutions to Emails-> Common\Common.sln -> am@email
Solutions to Emails-> ExcGw/ExcDataService.sln -> pm@email.com;am@email
Solutions to Emails-> MessB/MessB/Message.sln -> am@email
Solutions to Emails-> RiskS/RiskS2.sln -> jp@email.com;mz@email.com;mk@email.com;jk@email.com;ps@email.com

关于msbuild - 读取文本文件并拆分 MSBuild 中的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21460495/

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