Удаление косой черты в генерации имени файла на основе MSBuild / Convention - PullRequest
3 голосов
/ 22 июля 2010

Я пытаюсь найти набор сборок на основе следующего соглашения в каталоге:

{SubDirName}\{SubDirName}.dll

Я начал с создания MSBuild ItemGroup [путем пакетирования другой ItemGroup в .RecursiveDirчасть].

<AllAssemblies Include="$(SourceDirectory)\**\Test.*.dll" />
<Dirs Include="@(AllAssemblies->'%(RecursiveDir)')"/>

Каждый элемент имеет косую черту, например:

<Message Text="@(Dirs)"/>

Говорит:

SubDir1\;SubDir2\;SubDir3\

Теперь я хочу создать наборимена файлов из этого списка.

Проблема заключается в том, что:

<AssembliesByConvention Include="@(Dirs -> '%(Identity)\%(Identity).dll')" />

Генерирует:

SubDir1\\SubDir1\.dll;SubDir2\\SubDir2\.dll;SubDir3\\SubDir3\.dll

Мне не нужны косые черты до периода в .dll.

Какой самый чистый способ добиться этого?

Я знаю, что есть оператор выражения HasTrailingSlash, но в задачах OOTB нет признаков задачи RemoveTrailingSlash ?.Я не привередлив в том, что требуется версия MSBuild.

Ответы [ 2 ]

1 голос
/ 04 августа 2010

Вы пробовали

<AssembliesByConvention Include="@(Dirs -> '%(Identity)%(Identity).dll')" Condition="HasTrailingSlash(%(Identity))" />
<AssembliesByConvention Include="@(Dirs -> '%(Identity)\%(Identity).dll')" Condition="!HasTrailingSlash(%(Identity))" />
0 голосов
/ 20 апреля 2013

Вы можете использовать поддержку MSBuild .NET в .NET 4.0, чтобы заменить "\." на "." В конечном результате.

(Это, по крайней мере, решило бы мою первоначальную проблему)

...