使用MSBuild和CSPack任务打包Azure角色

Eri*_*k T 9 .net deployment msbuild build-automation azure

我正在为Azure Web角色项目编写构建脚本.该脚本将在构建服务器上运行,因此使用VS是非启动器.

我可以使用MSBuild构建项目,并使用CmdLets for Azure来处理部署(通过PowerShell).缺少的部分是云包的创建.我可以使用SDK中包含的CSPack.exe工具,但是如果可能的话,我想使用MSBuild任务,因为这样我可以利用构建配置选项并将包的创建与进程的其余部分集成.

我在Azure Web部署项目中进行了挖掘,但是我找不到对CSPack任务的任何引用.除非我缺少引用CSPack/Azure任务的文件,否则可能会发生一些VS魔术.我正在看的程序集是Microsoft.ServiceHosting.Tools.MSBuildTasks.dll - 反射器告诉我CSPack任务就在那里.

有没有人成功使用过CSPack MSBuild任务?如果是这样,任何关于如何使用它的指针将非常有帮助!

如果我正在咆哮完全错误的树,请告诉我!

谢谢,埃里克

Tay*_*ird 7

CSpack任务是Microsoft.CloudService.Targets msbuild文件的一部分.在默认安装中,这是在

C:\ Program Files(x86)\ MSbuild\Microsoft\CloudService\1.0\Visual Studio 10 \

您将在任何.ccproj(云服务)项目中看到对此的引用

<CloudExtensionsDir Condition=" '$(CloudExtensionsDir)' == '' ">$(MSBuildExtensionsPath)\Microsoft\Cloud Service\1.0\Visual Studio 10.0\</CloudExtensionsDir>

<Import Project="$(CloudExtensionsDir)Microsoft.CloudService.targets" />
Run Code Online (Sandbox Code Playgroud)

从那里你可以得到基本的格式和几种变化.例如,这是使用它的CorePublish目标

<CSPack
  ServiceDefinitionFile="@(ServiceDefinitionCopy)"
  Output="$(OutDir)Publish\$(ProjectName).cspkg"
  PackRoles="@(Roles)"
  SiteMapping="@(SiteMapping)"
  RoleProperties="@(RoleProperties)"
  CopyOnly="false"
  >
</CSPack>
Run Code Online (Sandbox Code Playgroud)

我们调用这种方式来生成我们的云包.如果这是您需要建议的特定情况,请提供详细信息.我们的用法很常见,我们(像你一样)对使用msbuild调用命令行没兴趣.

因此,将所有内容拼凑在一起,可以简单地发布

msbuild MyAzureProject.ccproj /t:CorePublish

或者如果您有一个多级项目文件夹的解决方案,并希望打包发布位

msbuild MyAzureProject\MyAzureProject.ccproj /t:CorePublish /Property:SolutionDir=..\ /p:Configuration=Release