开发者

Removing a trailing slash in MSBuild / Convention based filename generation

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 e开发者_StackOverflow社区xpression 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))" />


You can use MSBuild's .NET methods support in .NET 4.0 to replace the "\."s with "."s in the final result.

(This would at least solve my original problem)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜