MSBuild のプロパティに数値 "n" があります。また、「Str」を n 回繰り返して最終的な文字列を作成するには、n 回複製する必要がある文字列「Str」もあります。
例えば。nが3でStrが「abc」の場合、取得したいのは「abcabcabc」
MSBuild ではループできないため、これを実現する方法がわかりません。おそらくアイテム グループを使用しますが、「n」カウントを含むプロパティに基づいてアイテム グループを作成するにはどうすればよいですか?
ありがとう!
MSBuild のプロパティに数値 "n" があります。また、「Str」を n 回繰り返して最終的な文字列を作成するには、n 回複製する必要がある文字列「Str」もあります。
例えば。nが3でStrが「abc」の場合、取得したいのは「abcabcabc」
MSBuild ではループできないため、これを実現する方法がわかりません。おそらくアイテム グループを使用しますが、「n」カウントを含むプロパティに基づいてアイテム グループを作成するにはどうすればよいですか?
ありがとう!
通常、このような場合はインライン C# を使用することにします。これは、インターネット全体を検索して「真の」msbuild ソリューションを見つけるよりも時間がかからないためです。どうぞ:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MyString>abc</MyString>
<Count>3</Count>
</PropertyGroup>
<UsingTask TaskName="RepeatString" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<s ParameterType="System.String" Required="true" />
<n ParameterType="System.Int32" Required="true" />
<result ParameterType="System.String" Output="true" />
</ParameterGroup>
<Task>
<Code Type="Fragment" Language="cs"><![CDATA[
result = string.Concat( Enumerable.Repeat( s, n ) );
]]></Code>
</Task>
</UsingTask>
<Target Name="doit">
<RepeatString s="$(MyString)" n="$(Count)">
<Output PropertyName="result" TaskParameter="result" />
</RepeatString>
<Message Text="Result = $(result)"/>
</Target>
</Project>