0

我在我的 .csproj 文件中添加了一个“BeforeClean”和一个“AfterClean”目标,最初旨在删除正常构建路径之外位置的一些构建工件。

当我对项目进行“清理”时,我可以看出文件没有被删除;所以我简化了动作,只是吐出一条消息。像删除命令一样,消息命令没有被调用(我希望在“输出”窗口中看到消息)。

我可以在网上找到的唯一相关建议是确保在导入 Microsoft.CSharp.targets 文件后进行目标定义。我包含了我的 .csproj 文件的剪辑,其中包含足够的详细信息,以显示我的目标 def 相对于导入的位置。

据我所知,我做的一切都是正确的;为什么我的目标不会被调用?

提前致谢。

[更新和仅供参考:将重要性从“正常”更改为“高”时,我能够让目标开火。]

    <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>
4

1 回答 1

3

它实际上正在被调用,你只是看不到它。使用 /verbosity:normal 运行 msbuild.exe。或者更改 IDE 设置:工具 + 选项、项目和解决方案、构建和运行。或将重要性属性更改为high

于 2013-09-10T16:28:35.707 回答