基于DNF4.0框架的MSBuild编译技术研究及其应用

 

基于DNF4.0框架的MSBuild编译技术研究及其应用

—— 俞伟

 

这两天因为工作需要,把DailyBuild工具升级到可以支援.Net Framework 4.0(以下简称DNF4.0),本想应该不需要太多的时间,结果很意外,很杯具的发现升级上来的DailyBuild不能编译VS2010建立的DNF2.0C++,只好去研究DNF4.0下的MSBuild技术实现。

 

在研究DNF4.0MSBuild的过程发现,微软已经宣布DNF4.0版本前使用的Microsoft.Build.EngineMicrosoft.Build.Engine.Project过时了。无奈,只好重新研究下DNF4.0MSBuild。这里我把一些应用到的心得分享出来,欢迎大家一起交流。

 

DNF4.0MSBuild抛弃了之前使用的Microsoft.Build.EngineMicrosoft.Build.Engine.Project,取而代之的是Microsoft.Build.Evaluation.ProjectCollectionMicrosoft.Build.Evaluation.Project,我比较懒,关于他们两个的详细信息,大家可以去看看MSDN2010,呵呵!

 

ProjectCollection主要用来载入项目文件和管理所有载入的项目,以下我用代码的方式描述下创建ProjectCollection实例对象及其使用的过程

 

 

1.创建ProjectCollection实例对象

 

 

  ToolsetDefinitionLocations.Registry:表示从注册表中读取MSBuildToolVersions信息,如下图所示:

 

2.通过ProjectCollection载入项目文件,并得到对应的MSBuildProject实例对象

 

 

3.前面我们得到了Project实例对象,就可以对项目进行编译了,理论上编译一个项目就是这样了,具体的代码如下:

  project.Build()

看看,在心的MSBuild中,编译一个项目的步骤就这些,是不是很简单!!!呵呵,不过对于我们的应用来说,显然上面所说的还是远远不够的,如:如何把项目引用替换成程序集引用,项目编译的目标程序集的一些编译属性设置等。

 

接下来,我通过代码来描述下,如何配置编译属性和project中的项目引用替换

 

1.       设置MSBuild引擎的一些公共编译属性:

 

 

2.       MSBuildProject对象中的项目引用替换成程序集引用

 

 

好了,差不多了,其它的如设置程序集版本和项目编译优先级等,这里就不列出来了,呵呵,有点啰嗦了, CU

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值