I'm trying to search for a set of assemblies based on the following convention within a directory:
{SubDirName}\{SubDirName}.dll
I've started by creating an MSBuild ItemGroup [by batching another ItemGroup on the .RecursiveDir portion].
<AllAssemblies Include="$(SourceDirectory)\**\Test.*.dll" />
<Dirs Include="@(AllAssemblies->'%(RecursiveDir)')"/>
Each item has a trailing slash, i.e.:
<Message Text="@(Dirs)"/>
Says:
SubDir1\;SubDir2\;SubDir3\
Now, I want to generate a set of filenames from this list.
The problem is that:
<AssembliesByConvention Include="@(Dirs -> '%(Identity)\%(Identity).dll')" />
Generates:
SubDir1\\SubDir1\.dll;SubDir2\\SubDir2\.dll;SubDir3\\SubDir3\.dll
I dont want the slashes before the period in .dll
.
What's the cleanest way to achieve this?
I know there's a HasTrailingSlash expression operator, but there's no sign of a RemoveTrailingSlash task in the OOTB Tasks?. I'm not fussy about the MSBuild version required.
Have you tried
<AssembliesByConvention Include="@(Dirs -> '%(Identity)%(Identity).dll')" Condition="HasTrailingSlash(%(Identity))" />
<AssembliesByConvention Include="@(Dirs -> '%(Identity)\%(Identity).dll')" Condition="!HasTrailingSlash(%(Identity))" />
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With