Post 构建脚本

Post Build Script

我使用 VS2017 作为我的解决方案。

我在 bitbucket 中有一个主存储库(比如目录名称是 A)和子树形式的一些依赖项(在 A[=38 中) =] 文件夹和其他子文件夹说 B).

我想在所有子树(B 内的项目)中添加一个 post build,这样如果子树项目存在于文件夹 A 下(在本例中)然后将 dll 从 B 的 bin 文件夹复制到 A[ 中的文件夹=38=]。但是这个脚本不应该 运行 如果主目录中的子树项目。

所以解决我想找出文件夹B的父目录。如果这个父直接是 A 那么只将 dll 从 B/din/.dll 复制到 A/Assembles/bin/.dll

如何从 B 的 父文件夹中找出 A 在 post VS2017 中的构建脚本

运行 post-build 条件中的事件

因此,您只想在特定情况下 运行 一个 PostBuild 事件。为此,您可以使用 Condition.

在您的 Condition 中,您想检查 SolutionProject 的 parent 文件夹 dir(老实说,我不确定你的意思)。

MSBuild 获取目录的父级

如何获取父目录?

<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>

阅读更多

我不确定我的语法是否正确,请阅读更多内容: