Post Build Script - PullRequest
       101

Post Build Script

1 голос
/ 06 мая 2019

Я использую VS2017 для своего решения.

У меня есть основной репозиторий в bitbucket (скажем, имя каталога A ) и несколько зависимостей в виде поддерева(это внутри папки A и другой подпапки, скажем B ).

Я хочу добавить пост-сборку во все поддерево (проект внутри B ), так что если проект поддерева присутствует в папке A (в данном случае), то скопируйте dll из папки B's bin в папку в A * * тысяча двадцать два.Но этот сценарий не должен запускаться, если проект поддерева находится в главном каталоге.

Так что решите, я хотел выяснить родительский каталог папки B .Если это родительское прямое значение A , скопируйте только dll из B / din / .dll в A / Assembles / bin / .dll

Как я могу найти из родительской папки B, которая является A в сценарии пост-сборки в VS2017

1 Ответ

1 голос
/ 08 мая 2019

Запустить событие после сборки в условии

Итак, вы хотите запустить событие PostBuild только в конкретном случае. Для этого вы можете использовать Condition.

В вашем Condition вы хотите проверить папку parent вашего Solution или Project dir (честно, я не уверен, что вы имел в виду).

MSBuild - родитель dir

Как вы можете получить родительский каталог?

<PropertyGroup>
    <ProjectParentDir>$([System.IO.Path]::GetDirectoryName($(ProjectDir))))</ProjectParentDir>
    <SolutionParentDir>$([System.IO.Path]::GetDirectoryName($(SolutionDir)))</SolutionParentDir>
</PropertyGroup>

Ответ

Итак, теперь вы можете объединить вышеуказанные знания:

<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$(ProjectParentDir.EndsWith('A'))">
    // Do your post build
</Target>

Комментарий

Поскольку я думаю, что, возможно, ваш вопрос неправильный, и, возможно, вы можете достичь своего решения без PostBuild, я думаю, что вы можете использовать описанный мной инструмент для управления самим OutputPath.

<PropertyGroup>
    <ProjectParentDir>$([System.IO.Path]::GetDirectoryName($(ProjectDir))))</ProjectParentDir>
</PropertyGroup>

<PropertyGroup Condition="$(ProjectParentDir.EndsWith('A'))">
    <OutputPath>Path/to/somewhere</OutputPath>
</PropertyGroup>
<PropertyGroup Condition="!$(ProjectParentDir.EndsWith('A'))">
    <OutputPath>Path/to/somewhere</OutputPath>
</PropertyGroup>

Подробнее

Я не уверен, что мой синтаксис правильный, пожалуйста, прочитайте больше:

...