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
中,您想检查 Solution 或 Project 的 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>
阅读更多
我不确定我的语法是否正确,请阅读更多内容:
我使用 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
中,您想检查 Solution 或 Project 的 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>
阅读更多
我不确定我的语法是否正确,请阅读更多内容: