2011-01-19 19 views
9

Bir Azure web rol projesi için bir oluşturma komut dosyası üzerinde çalışıyorum. Komut bir yapı sunucusu üzerinde çalışacaktır, bu yüzden VS kullanmak bir başlatıcı değildir.Azure rollerini paketlemek için MSBuild ve CSPack görevini kullanma

MSBuild kullanarak projeyi oluşturabilir ve dağıtımı (PowerShell aracılığıyla) işlemek için CmdLets for Azure kullanın. Eksik olan kısım bulut paketinin oluşturulmasıdır. SDK'da bulunan CSPack.exe aracını kullanabilirim, ancak mümkünse MSBuild görevlerini kullanmak istiyorum, bu şekilde yapı yapılandırma seçeneklerini kullanabiliyorum ve paketin oluşturulmasını sürecin geri kalanıyla bütünleştirebiliyorum.

Azure web dağıtımı projesinde kazdım ancak CSPack görevine herhangi bir başvuru bulamıyorum. CSPack/Azure görevlerine başvuran dosyayı kaçırmadığım sürece, burada gerçekleşen bazı VS büyüsü olabilir. Baktığım derleme, Microsoft.ServiceHosting.Tools.MSBuildTasks.dll - reflektör, CSPack Görev'in orada olduğunu söyledi.

Herkes CSPack MSBuild görevini başarıyla kullanmış mı? Eğer öyleyse, nasıl kullanılacağı ile ilgili herhangi bir işaretçi çok yararlı olurdu!

Tamamen yanlış bir ağaç havlıyorsam, lütfen bana bildirin!

sayesinde Erick

cevap

7

CSpack görevi, Microsoft.CloudService.Targets msbuild dosyasının bir parçasıdır. varsayılan olarak yüklemek şudur

C'de: \ Program Files (x86) \ MsBuild \ Microsoft \ CloudService herhangi .ccproj bu referansı göreceksiniz 10 \

1.0 \ Visual Studio \ (bulut hizmet), temel biçimi ve çeşitli varyasyonları elde edebileceğinizden,

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

<Import Project="$(CloudExtensionsDir)Microsoft.CloudService.targets" /> 
Buradan. Örnek olarak, işte bu

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

Biz bulut paketleri oluşturmak için bu şekilde çağırmak kullanarak CorePublish hedeftir. Burada özel bir senaryo varsa, tavsiyeye ihtiyacınız var, lütfen bu ayrıntıyı sağlayın. Bizim kullanım oldukça yaygın, biz sadece (sizin gibi) komut satırına çağırmak için msbuild kullanarak ilgilenen yoktu.

Yani, bir basitçe

msbuild MyAzureProject.ccproj /t:CorePublish

yayınlamaması veya çoklu tesviye proje klasörleri ile bir çözüm var ve Release paketlemek istiyorsanız

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

+0

Taylor, cevap için teşekkürler. MSBuild dosyasının kalanını gönderebilecektiniz (sadece masmavi kısımlarla)? Çok yardımı dokunur. Teşekkürler - Erick –

+0

emin, ben bugün daha sonra birlikte koyacağım ve bu gece –

+0

@ Taylor için bir şey bulup bir araya getirme şansı buldunuz mu? MsBuild'in – Joe

1

Onları kullanıyorum ama Visual Studio ve yapı sunucularında yüklü Azure SDK 1.3 var. Bunun etrafında hiçbir şey bulamadım. Visual Studio Express'i yapı sunucularında kullanmaktan kurtulabilirsiniz, böylece bunu önce denemek isteyebilirsiniz.

+0

Can bitleri olabilir her şeyi birlikte ekleme Bana görevleri nasıl kullandığınıza dair bir örnek veriyorsunuz? Bu, çözmeyi denediğim ilk problem, orada hiçbir örnek bulamadığım için. –

+0

Sadece yapı sunucudaki bulut proje türlerini kullanıyorum. Cspack'i doğrudan aramak, yapılacak şeyler listemde olmakla birlikte, henüz zirveye ulaştı. –

1

PackageCommand sen cspack.exe çağırmak için komut satırında kullandığımız nerede olduğunu sadece

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

kullanıyorum.

+0

Yanıt için teşekkürler Carlos. Komut satırını kullanmaktan kaçınmayı umuyordum, ama oraya gidebilirim. –