未执行生成之前的MSBuild目标

未执行生成之前的MSBuild目标,msbuild,build-script,Msbuild,Build Script,我似乎遇到了这样一种情况:我放入BeforeBuild目标的代码没有成功执行 以下是我所拥有的: <Target Name="BeforeBuild" > <Message Text="Before Build" /> </Target> 生成运行时,在生成日志中看不到消息输出。我格式化它的方式是否有问题,或者它必须在脚本中的特定位置?我是否在正确的位置查找这些消息 编辑:将重要性更改为“高”似乎没有什么区别您需要正确覆盖构建前目标。最简单的方法

我似乎遇到了这样一种情况:我放入BeforeBuild目标的代码没有成功执行

以下是我所拥有的:

<Target Name="BeforeBuild" >
    <Message Text="Before Build" />
</Target>

生成运行时,在生成日志中看不到消息输出。我格式化它的方式是否有问题,或者它必须在脚本中的特定位置?我是否在正确的位置查找这些消息


编辑:将重要性更改为“高”似乎没有什么区别

您需要正确覆盖构建前目标。最简单的方法是在标记之前插入override,或者将此任务声明为DefaultTargets

<Project DefaultTargets="DesktopBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
    <!-- Override TFS build targets and run custom made ones -->
  <Target Name="BeforeCompile" DependsOnTargets="VersionAssemblies"></Target>
  <Target Name="AfterCompile" DependsOnTargets="GetTime;RunTests;CreateHTMLReport;Mail"></Target>
  <Target Name="AfterDropBuild" DependsOnTargets="RemovePrevContent;CopySrcBinaries;ZipBinPackages;CopyAllContent;RemoveBindings"></Target>

</Project>

查看此问题的答案


您只需移动BeforeBuild目标,使其显示在导入Microsoft.CSharp.targets的行之后。

如何启动脚本?你在哪里寻找信息?尝试将属性重要性=“高”添加到消息任务。我正在查看构建日志-这是错误的位置吗?这是正确的位置。你能把项目文件内容粘贴到这里吗?我想我发现了问题。我认为TFSBuild.proj目标被本地project.proj文件(它有一个空的BeforeBuild和AfterBuild)覆盖了。当我覆盖beforecomile时,它工作了。但重写BeforeBuild并不是这样。指定DefaultTargets似乎并不重要-如果.proj文件中有用于解决方案的内容,它似乎会将其用作首选项。