在VS 2012中编译之前修改C#代码

时间:2013-06-14 05:45:41

标签: c# visual-studio-2012 msbuild

我遇到类似问题的类似问题:Create MSBuild custom task to modify C# code *before* compile

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

引用上述问题的答案:

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

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

解决方案似乎清晰而精细,但我无法找到(所有Visual Studio 2012):

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

谢谢,如果有人可以帮我一个例子,那就太好了: - )

1 个答案:

答案 0 :(得分:1)

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

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

也许这可能会有所帮助?