Dot-Net

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

  • December 9, 2014

我正在為 Azure Web 角色項目編寫建構腳本。該腳本將在建構伺服器上執行,因此使用 VS 是不可能的。

我可以使用 MSBuild 建構項目並使用CmdLets for Azure來處理部署(通過 PowerShell)。缺少的部分是雲包的創建。我可以使用 SDK 中包含的 CSPack.exe 工具,但如果可能,我想使用 MSBuild 任務,因為這樣我可以利用建構配置選項並將包的創建與流程的其餘部分集成。

我在 Azure Web 部署項目中進行了研究,但找不到對 CSPack 任務的任何引用。這裡可能會發生一些 VS 魔術,除非我錯過了引用 CSPack/Azure 任務的文件。我正在查看的程序集是 Microsoft.ServiceHosting.Tools.MSBuildTasks.dll - 反射器告訴我 CSPack 任務在那裡。

有沒有人成功使用過 CSPack MSBuild 任務?如果是這樣,任何關於如何使用它的指示都會非常有幫助!

如果我在吠叫完全錯誤的樹,請告訴我!

謝謝,埃里克

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

引用自:https://stackoverflow.com/questions/4731665