2011-01-19 14 views
9

sto lavorando su uno script di build per un progetto di ruolo web Azure. Lo script verrà eseguito su un server di build, quindi l'uso di VS è un non-starter.Utilizzando MSBuild e il compito CSPack per confezionare ruoli Azure

Posso creare il progetto utilizzando MSBuild e utilizzare CmdLets for Azure per gestire la distribuzione (tramite PowerShell). La parte mancante è la creazione del pacchetto cloud. Posso utilizzare lo strumento CSPack.exe che è incluso nel SDK, ma vorrei utilizzare le attività di MSBuild, se possibile, in quanto in questo modo posso sfruttare le opzioni di configurazione di compilazione e integrare la creazione del pacchetto con il resto del processo.

ho scavato in giro per il progetto di distribuzione web Azure, ma non riesco a trovare alcun riferimento al compito CSPack. Potrebbero esserci delle magie VS qui, a meno che non manchi il file che fa riferimento alle attività CSPack/Azure. L'assemblea che sto guardando è Microsoft.ServiceHosting.Tools.MSBuildTasks.dll - riflettore mi dice che il CSPack Task è in là.

Qualcuno ha utilizzato con successo il compito CSPack MSBuild? Se è così, qualsiasi suggerimento su come usarlo sarebbe molto utile!

Se sto abbaiare contro l'albero completamente sbagliato, fatemelo sapere!

Grazie, Erick

risposta

7

L'attività CSpack è parte del file Microsoft.CloudService.Targets msbuild. In una installazione di default questo è al

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

Vedrete il riferimento a questo in qualsiasi .ccproj (nuvola servizio) progetto

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

<Import Project="$(CloudExtensionsDir)Microsoft.CloudService.targets" /> 

Da lì è possibile ottenere il formato di base e diverse varianti. Ad esempio, questo è il target CorePublish che lo utilizza

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

Si invoca in questo modo per generare i nostri pacchetti cloud. Se questo è uno scenario particolare su cui hai bisogno di consigli, ti preghiamo di fornire quel dettaglio. Il nostro utilizzo è abbastanza comune, solo noi (come te) non eravamo interessati a utilizzare msbuild per invocare la riga di comando.

Così mettendo tutto insieme, si può semplicemente emettere

msbuild MyAzureProject.ccproj /t:CorePublish

o se si dispone di una soluzione con le cartelle a gradoni progetto e desidera comprimere l'uscita bit di

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

+0

Taylor, grazie per la risposta. Sareste in grado di pubblicare il resto del file MSBuild (con solo le parti blu)? Questo sarebbe molto utile. Grazie - Erick –

+0

certo, lo metterò insieme più tardi oggi e avrò qualcosa da fare stasera –

+0

@Taylor hai mai avuto la possibilità di metterlo insieme? Sto avendo problemi a trovare msBuild per creare il pacchetto – Joe

1

li sto usando, ma ho Visual Studio e l'Azure SDK 1.3 installato sui server di build. Non ho potuto trovare alcun modo per aggirare questo. È possibile utilizzare Visual Studio Express sui server di generazione, quindi si consiglia di provare prima.

+0

Can mi dai un esempio di come stai usando i compiti? Questo è il primo problema che sto cercando di risolvere, poiché non ho trovato nessun esempio. –

+0

Sto solo utilizzando i tipi di progetti cloud sul mio server di build. Chiamare direttamente cspack è sulla mia lista di cose da fare ma deve ancora arrivare in cima. –

1

sto solo usando

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

dove PackageCommand è quello che si utilizza nella riga di comando per chiamare cspack.exe.

+0

Grazie per la risposta Carlos. Speravo di evitare di usare la riga di comando, ma potrei finire lì. –

Problemi correlati