PowerShell 在 SharePoint 2010 自动化部署中的应用(2)-编译打包

上次说到通过PowerShell将项目代码从TFS服务器拿到本地,这次再说说编译和打包的经历

2 编译打包

我相信做过SharePoint2007的都有过打包时恶梦般的经历,Cabinet SDK,VSeWSS,WSPBuilder,文本编辑器… … 来回切换。这时我总是怀念做ASP.NET的日子,开个VS就足够的,舒服呀…

随着SharePoint给MS挣到越来越多的钱,地位也在不断上升,在 VS2010里,SharePoint已经属于First Class级别的支持了!用VS2010我们已经可以直接生成wsp包,并且一键部署到本地环境进行测试,很是给力。那我们是否也能通过MSBuild来直接生成wsp包呢?答案当然是木问题啦。下面是我在做的过程中遇到的问题和解决方法,如果谁有更好的,也和俺Share一下啊

1. MSBuild貌似不能以.sln文件为参数生成解决方案中所包含的SharePoint项目,只能单独调用SharePoint项目文件,一次生成一个wsp包

2. MSBuild中打包的Build Action参数是Package

3. 注意PowerShell中Call Operator ‘ & ‘的用法。具体细节可以查MSDN(废话,嘿嘿)。

 

下面是代码和注释

#指定MSBuild的路径
$exe = "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe";

#需要编译/打包项目的参数数组,每个项目需要指定4个参数
#[0] 指定项目的路径
#[1] 项目文件名称
#[2] 项目的Build Action 'Package','Comple','Build'...对于SharePoint项目打包成wsp的值应是Package
#[3] 编译时用的配置信息,在VS中可以设置,默认提供‘Debug’,‘Release’
$projects = ,('F:\SolutionA\ProjectA','ProjectA.csproj','Package','Debug'),
		('F:\SolutionA\ProjectB','ProjectB.csproj','Package','Debug'),
		('F:\SolutionA\ProjectC','ProjectC.csproj','Build','Debug');

#设置编译结果的目标路径
$OutputPath = 'F:\Target';

Foreach($project in $projects)
{
	#生成项目文件的绝对路径名称
	$projectFile = $project[0]+"\"+$project[1];
	$target = $project[2];
	$conf = $project[3];
	#调用MSBuild进行编译,由于命令以变量的形式存在,需要添加调用操作符'&'
	& $exe $projectFile /t:$target /p:OutputPath=$OutputPath /p:Configuration=$conf
}

 

在学习PowerShell的时候我感觉网上的教程很多,但多以手册查阅为主,如果有时间可以看看Manning的《PowerShell In Action》,现在好像还只有2007年的第一版针对的是PowerShell1.0,感觉讲的还可以, 第2版状态还是MEAP,不给力呀… 除此以外,如果谁有好书也推荐一下。

 

posted @ 2010-11-28 10:56  crazysharepoint  阅读(1623)  评论(2编辑  收藏  举报