在项目休息之前确保子目录构建

时间:2014-08-11 21:56:51

标签: c# msbuild

使用多个子部分处理一个非常大的C#项目。其中一个部分创建并将dll放置在特定位置以供使用。根据最近的变化,我们现在尝试将这些dll与每个根构建调用放在一起。 (用于手动放置每个里程碑左右)

所以我引用了dirs.proj文件,该文件正在编译创建和放置dll的子目录。一切正常。问题是,由于某种原因,项目的其他部分在该部分完成编译之前就开始寻找这些dll。

如何确保项目的这一部分被编译并在开始编译其余部分之前放置dll?我有一个非常简短的理解,但实际上不知道如何使用它们做我想做的事。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

阅读Build TargetsMakeDir任务。

您需要在计划在默认构建任务之前发生的任务中包含创建新目录的逻辑。

<Target BeforeTargets="Build" Name="CreateRequiredFolder" Condition="!EXIST('$(MyDirectory)')" >
    <MakeDir Directories="$(MyDirectory)" />
</Target>

注意我们如何使用BeforeTargets在Build之前安排它,如果所需的文件夹已经存在,目标上的条件会导致它被跳过。

答案 1 :(得分:0)

以下是我最终要做的工作。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="......." InitialTargets="BuildWebshared">


<ItemGroup>
  <WebsharedProjects Include="..\location\dirs.proj" />
</ItemGroup>

<Target Name="BuildWebshared">
  <MSBuild
    Projects="@(WebsharedProjects)"
    Targets="Build">
  </MSBuild>
</Target>
....