我使用 VS2017 作为解决方案。
我在bitbucket中有一个主存储库(例如,目录名称为 A ),并且子树形式的依赖项很少(位于 A 文件夹中,其他子文件夹说< strong> B )。
我想在所有子树( B 中的项目)中添加一个 post build ,以便如果子树项目位于文件夹 A 下>(在这种情况下),然后将dll从 B的 bin文件夹复制到 A 中的文件夹。但是,如果子树项目位于主目录中,则此脚本不应运行。
所以解决,我想找出文件夹 B 的父目录。如果此父目录为 A ,则仅将dll从 B / din / .dll复制到 A / Assembles / bin / .dll
在VS2017中的发布脚本中,如何从 B的父文件夹中找到 A
答案 0 :(得分:1)
因此,您只想在特定情况下运行PostBuild
事件。为此,您可以使用Condition
。
在您的Condition
中,您要检查 Solution 或 Project 目录的父级文件夹(老实说,我不确定你的意思)。
如何获取父目录?
<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>
我不确定我的语法是否正确,请阅读更多信息: