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

时间:2011-01-19 04:14:36

标签: .net deployment msbuild azure build-automation

我正在为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任务?如果是这样,任何有关如何使用它的指示都会非常有用!

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

谢谢, 埃里克

3 个答案:

答案 0 :(得分: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" />

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

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

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

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

msbuild MyAzureProject.ccproj /t:CorePublish

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

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

答案 1 :(得分:1)

我正在使用它们,但我在构建服务器上安装了Visual Studio和Azure SDK 1.3。我无法找到任何方法。您可能会在构建服务器上使用Visual Studio Express,因此您可能需要先尝试一下。

答案 2 :(得分:1)

我刚刚使用

<Exec Command="$(PackageCommand)" WorkingDirectory="$(BuildProjectFolderPath)\..\main\source\" />

其中PackageCommand是您在命令行中用来调用cspack.exe的。