2

我有一个类似的问题,比如这里的问题:创建 MSBuild 自定义任务以修改 C# 代码 *before* compile

我需要在编译前更改 .cs 文件。当然,由于版本控制,我不希望它们就地改变。我已经发现,自定义 MSBuild 任务可能是完成这项工作的正确选择。

引用上述问题的答案:

创建接受 cs 文件列表以在编译之前进行调整的自定义任务

  • 自定义任务调整接收到的文件列表并在磁盘上创建它们
  • 自定义任务在输出参数上设置更改文件列表
  • 任务的输出将替换原始的 cs 文件列表
  • 编译是针对更改的文件完成的。

解决方案看起来很清晰很好,但是我找不到(全部适用于 Visual Studio 2012):

  • 该任务应该获得什么目标?BeforeCompile 还是为时已晚?
  • 我怎样才能将“编译文件”作为参数提供给任务?它是如何定义的?
  • 如何准确定义输出以便编译使用修改后的文件?

谢谢,如果有人能帮我举个例子就好了:-)

4

1 回答 1

1

我的一个客户要求我在编译之前替换一些 AssemblyInfo.cs 文件中的一些版本和版权信息。我正在通过 FileUpdate 任务执行此操作,并使用正则表达式。这当然会导致修改文件。但这完全没有问题,只需使用 Exec 任务并在构建作业结束时运行“svn revert”即可:

    <Target Name="RevertModifications">
    <Message Text="reverting modifications..." />
    <Exec Command="svn revert -R $(RootDir)"/>
</Target>

也许这可能会有所帮助?

于 2013-10-09T12:04:28.220 回答