Как добавить результат преобразованной партии в исходный набор элементов? - PullRequest
0 голосов
/ 11 ноября 2011

У меня есть скрипт MSBuild, который использует пользовательскую задачу для извлечения информации о версии из файлов AssemblyInfo:

<GetAssemblyInfo
    AssemblyInfoFiles="@(WebProject->
        '%(RootDir)%(Directory)Properties\AssemblyInfo.cs')">
    <Output TaskParameter="AssemblyInfo" ItemName="AssemblyInfo"/>
</GetAssemblyInfo>

Это создает новый набор элементов, которые содержат необходимую информацию в качестве дополнительных метаданных.

На данный момент я не знаю, как связать метаданные с исходными элементами WebProject. Концептуально они связаны друг с другом путем, выраженным исходным преобразованием %(RootDir)%(Directory)Properties\AssemblyInfo.cs.

Я пытался использовать различные комбинации синтаксиса пакетной обработки MSBuild, но каждая из них кажется далеко от того места, где я хочу быть, чем предыдущая.

Я очень новичок в пакетировании с MSBuild, поэтому любые примеры приветствуются.

1 Ответ

0 голосов
/ 13 ноября 2011

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

Создание продукта перекрестного соединения всех версий проектов и сборок.Дополнительно включите каталог, в котором находится файл AssemblyInfo.

<ItemGroup>
    <VersionedProject Include="@(WebProject)">
        <Version>%(AssemblyInfo.AssemblyFileVersion)</Version>
        <AssemblyInfoDir>
            %(AssemblyInfo.RootDir)%(AssemblyInfo.Directory)
        </AssemblyInfoDir>
    </VersionedProject>

Затем удалите все элементы, где каталог свойств не является местоположением файла AssemblyInfo.

    <VersionedProject
        Remove="@(VersionedProject)"
        Condition="'%(RootDir)%(Directory)Properties\' != '%(AssemblyInfoDir)'"/>
</ItemGroup>

Следующие выходные данные корректнысписок названий проектов и номеров версий.

<Message Text="%(VersionedProject.Filename): %(VersionedProject.Version)" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...