创建MSBuild自定义任务以在编译之前修改C#代码

时间:2020-03-06 14:55:46  来源:igfitidea点击:

我想创建一个自定义MSBuild任务,该任务将在.cs文件由csc.exe编译之前对其进行更改(但是,当然,它们不会在不希望实际源文件被触及的地方进行修改)。我知道PostSharp和.NET的其他AOP框架,它们不是该特定项目的选项,而且我想学习如何做到这一点。

我到底要做什么才能使它正常工作?

谢谢
理查德

解决方案

考虑到限制,我认为我们可以执行以下操作:

  • 创建接受cs文件列表以在编译之前进行适应的自定义任务
  • 自定义任务会调整接收到的文件列表,并在磁盘上创建它们
  • 定制任务在输出参数上设置更改文件的列表
  • 任务的输出将替换原始的cs文件列表
  • 针对更改的文件完成编译。

步骤4确保最终编译的文件是自定义任务更改的文件。

我们将严重依赖ITaskItem接口来完成工作。