使用CustomBeforeMicrosoftCommonTargets等自定义.NET Core的msbuild

时间:2018-01-24 18:07:02

标签: msbuild .net-core hook customization

很长一段时间以来,通过将CustomBeforeMicrosoftCommonTargetsCustomAfterMicrosoftCommonTargets设置为与给定对应的命令行shell中的环境变量,我非常成功地非侵入式地定制了许多.NET Framework构建。开发/构建工作区。

我会将这些环境变量设置为指向自定义msbuild目标文件,然后将自动导入(分别在之前和之后)导入标准Microsoft提供的目标文件。这已经很长时间了,但是现在.NET Core出现了,我找不到那样的机制。

我知道Directory.Build.props,但这似乎并不相同。首先,它是侵入性的,要求我将文件添加到我不想触摸的源树中,以便自定义其构建(可能是一个开源项目,我不想成为将新文件注入其中)。对于两个,它没有提供非常重要的双重前/后导入钩子(如果这种二元性不重要,微软永远不会提供它)。

我也不喜欢在神奇的全球位置删除魔法文件,因为我的构建策略/自定义本身就是版本化的源代码,这些源代码可能因开发人员工作区而异(即使在同一台计算机上也是同一台开发人员) )。

似乎奇怪的是,微软未能在.NET Core中保留这种长期且基本有用的msbuild定制功能。我错过了一个功能强大,易于使用和非侵入性的机制吗?它在那里,我还没找到它吗?

1 个答案:

答案 0 :(得分:0)

CustomBeforeMicrosoftCommonTargetsCustomAfterMicrosoftCommonTargets仍然是VS 2017和.NET Core SDK中包含的MSBuild 15的一部分。

将它们设置为全局变量仍将导入它们并覆盖未设置时使用的默认位置。使用/bl参数生成二进制生成日志,使用MSBuild structured log viewer来诊断您可能遇到的问题。