2011-01-19 26 views
9

私はAzure Webロールプロジェクトのビルドスクリプトを作成しています。スクリプトはビルドサーバー上で実行されるため、VSを使用するのは非スターターです。MSBuildとCSPackタスクを使用してAzureロールをパッケージ化する

MSBuildを使用してプロジェクトを構築し、CmdLets for Azureを使用して(PowerShell経由で)展開を処理できます。見つからない部分は、クラウドパッケージの作成です。 SDKに含まれているCSPack.exeツールを使用できますが、できるだけMSBuildタスクを使用したいので、ビルド設定オプションを活用し、残りのプロセスとパッケージの作成を統合することができます。

私はAzure Webデプロイメントプロジェクトで掘り下げましたが、CSPackタスクへの参照が見つかりません。私がCSPack/Azureのタスクを参照するファイルが見つからない限り、ここでVSマジックが起こっているかもしれません。私が見ているアセンブリは、Microsoft.ServiceHosting.Tools.MSBuildTasks.dllです。リフレクターはCSPackタスクがそこにあることを教えてくれます。

誰でもCSPack MSBuildタスクを正常に使用しましたか?もしそうなら、それをどのように使うべきかについての指針は非常に役に立つでしょう!

私が完全に間違った木を吠えているなら、私に知らせてください!

おかげで、 エリック

答えて

7

CSpackタスクは、Microsoft.CloudService.Targets msbuildファイルの一部です。デフォルトではインストールこれは

Cで:\プログラムファイル(x86の)\ MSBuildの\マイクロソフト\ CloudServiceあなたはどの.ccprojにこのへの参照が表示されます10 \

1.0 \ Visual Studioの\(クラウドサービス)プロジェクト

<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

+0

テイラー、返事をありがとう。残りのMSBuildファイル(空白部分のみ)を投稿することはできますか?それは非常に役に立ちます。ありがとう - エリック –

+0

確かに、私は今日一緒にそれを入れて、今夜は何かを得るでしょう –

+0

@テイラーあなたはそれを一緒に置くチャンスを得たことがありますか?私はmsBuildにパッケージ – Joe

1

私はそれらを使用していますが、私は、Visual Studio、ビルドサーバーにインストールAzureのSDK 1.3を持っています。私はそれを回避する方法を見つけることができませんでした。ビルドサーバー上でVisual Studio Expressを使用すると、最初に試してみることができます。

+0

をパッケージ化したい場合は缶を発行することができますどのようにタスクを使用しているかの例を私に教えてください。それは私が解決しようとしている最初の問題です。 –

+0

私はビルドサーバーでクラウドプロジェクトの種類を使用しています。 cspackを直接呼び出すことは私のやるべきことのリストにありますが、まだそれをトップにしています。 –

1

私はちょうどPackageCommandあなたはcspack.exeを呼び出すには、コマンドラインで使用するものです

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

を使用しています。

+0

レスポンスありがとうカルロス。私はコマンドラインの使用を避けたいと思っていましたが、私はそこで終わるかもしれません。 –

関連する問題