我在使用 msbuild 文件时遇到了一些问题。
我希望构建具有三个目标,按以下顺序执行:
Cleanup:清理先前构建的输出Build: 实际构建CopyFiles:打包构建输出以便于部署的任务
现在的问题是:我希望调用者显式设置目标的属性 ( ReleasePath) 。此外,如果只调用and任务CopyFiles,调用者不必设置输出路径。CleanupBuild
我的第一次尝试是:
<PropertyGroup>
<ReleasePath></ReleasePath>
</PropertyGroup>
<Target Name="Initialize">
<Error Text="The ReleasePath property isn't defined" Condition="'$(ReleasePath)' == ''"/>
</Target>
<Target Name="CopyFiles" DependsOnTargets="Initialize">
</Target>
它工作正常,但Initialize目标是在之前执行的CopyFiles,即之后Build。并且Build目标可能需要很长时间才能执行,所以如果出现问题,我希望立即通知用户。
所以基本上,有没有办法Initialize在一开始就运行目标,但前提CopyFiles是包含在目标中?
我还想过放入项目Initialize的InitialTargets属性,然后设置一个条件,仅当CopyFiles被选中时才执行此目标,但令我惊讶的是,我找不到包含调用者选择的目标列表的属性。