我在我的.csproj文件中添加了'BeforeClean'和'AfterClean'目标,最初设计用于删除正常构建路径之外的某些位置的构建工件。
当我对项目进行“清理”时,我可以说文件没有被删除;所以我愚蠢的行动只是吐出一条消息。与delete命令一样,不会调用message命令(我希望在'Output'窗口中看到该消息)。
我在网上找到的唯一相关建议是确保在导入Microsoft.CSharp.targets文件后执行目标定义。我包含了我的.csproj文件的剪辑,其中包含足够的详细信息,以显示我的目标defs与导入相对的位置。
据我所知,我做的一切都是正确的;为什么我的目标不会被调用?
提前致谢。
[更新和仅供参考:我将重要性从'正常'更改为'高'时能够触发目标。]
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
</PropertyGroup>
<Target Name="BeforeClean">
<Message Text="Hello Clean World!" Importance="normal" ContinueOnError="true"/>
</Target>
<Target Name="AfterClean">
<Message Text="Goodbye Clean World!" Importance="normal" ContinueOnError="true"/>
</Target>
</Project>
答案 0 :(得分:3)
它实际上是被调用的,你只是看不到它。使用/ verbosity运行msbuild.exe:normal。或者更改IDE设置:工具+选项,项目和解决方案,构建和运行。或者将重要性属性更改为high
。