C#中的程序化构建事件?

时间:2011-03-01 12:55:14

标签: c# .net build

这对我来说听起来像是幻想,但我可以在我的项目中创建一个类,在项目构建时运行方法或类似的东西吗?是否有接口或抽象类?

4 个答案:

答案 0 :(得分:5)

您的项目文件由MSBuild文件组成,您可以从中执行任何操作:

http://msdn.microsoft.com/en-us/library/7z253716.aspx

基本上,您可以在Visual Studio中“卸载”项目文件,并使用普通文本编辑器对其进行编辑。

在* .csproj文件(以及其他一些项目类型中)中查找此区域,请注意并非所有项目文件都是MSBuild兼容文件:

 <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->

只需在那里添加MSBuild任务:)

答案 1 :(得分:1)

正如Zidad指出的那样,您可以编辑MSBuild项目文件。

您还可以在PreBuildPostBuild个活动中添加一些内容。检查项目属性窗格。

答案 2 :(得分:1)

我认为你需要编写MSBuild Tasks。 如果您想要更好的个性化,您可以创建像批处理一样的东西,或者如果您想要一个控制台或winform应用程序并调用命令行msbuild并以编程方式执行操作。

答案 3 :(得分:0)

MSBuild能够使用从Task类派生的自定义任务。这使您可以创建自定义任务,并在构建过程中将它们挂钩到各个点。

但听起来几乎就像你想要一些东西在代码编译时采取行动,这显然是不可能的,因为代码还没有被编译。