我在使用 msbuild 文件时遇到了一些问题。
我希望构建具有三个目标,按以下顺序执行:
Cleanup
:清理先前构建的输出Build
: 实际构建CopyFiles
:打包构建输出以便于部署的任务
现在的问题是:我希望调用者显式设置目标的属性 ( ReleasePath
) 。此外,如果只调用and任务CopyFiles
,调用者不必设置输出路径。Cleanup
Build
我的第一次尝试是:
<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
被选中时才执行此目标,但令我惊讶的是,我找不到包含调用者选择的目标列表的属性。