为什么我的MSBuild自定义任务运行无输出且无法正常生效?
问题解决方法
你自定义的MyTarget没有绑定到MSBuild的默认构建执行链路中,默认不会自动运行,才会出现两条消息都不输出的情况,按照以下步骤操作即可:
- 给Target添加执行时机绑定
如果你需要让该目标在默认构建完成后运行,给Target节点添加AfterTargets="Build"属性即可,修改后的配置参考:
<UsingTask AssemblyFile="C:\Path\To\MyTasks.dll" TaskName="MyTasks.HelloWorld"/> <Target Name="MyTarget" AfterTargets="Build"> <Message Text="I want to run a custom task." Importance="High"/> <HelloWorld/> </Target>
如果需要在构建启动前运行,将属性值改为BeforeTargets="Build"即可。
2. 排查其他常见异常
如果修改后任务还是不生效,检查以下配置:
- 确认
AssemblyFile填写的dll路径完全正确,建议优先使用相对于项目文件的路径,比如$(ProjectDir)..\MyTasks\bin\Release\MyTasks.dll,避免硬编码绝对路径出错 - 确认自定义任务项目的编译框架和当前项目的MSBuild版本兼容:如果自定义任务是用.NET Core/.NET 5+编译的,仅支持SDK风格项目使用,无法在旧的.NET Framework非SDK风格项目中运行;要兼容旧项目需要将自定义任务项目切换为.NET Framework 4.x框架编译
- 修改完项目文件后,右键Visual Studio中的项目选择「重新加载项目」,再重新触发构建即可
内容的提问来源于stack exchange,提问作者Matthias Michailow
相关产品推荐
相关产品推荐

