2011-01-19 29 views
9

Tôi đang làm việc trên tập lệnh xây dựng cho dự án vai trò web Azure. Kịch bản sẽ chạy trên một máy chủ xây dựng, do đó, sử dụng VS là một không khởi động.Sử dụng tác vụ MSBuild và CSPack để đóng gói vai trò Azure

Tôi có thể tạo dự án bằng MSBuild và sử dụng CmdLets for Azure để xử lý việc triển khai (thông qua PowerShell). Phần bị thiếu là việc tạo gói đám mây. Tôi có thể sử dụng công cụ CSPack.exe được bao gồm trong SDK, nhưng tôi muốn sử dụng các tác vụ MSBuild nếu có thể, theo cách đó tôi có thể tận dụng các tùy chọn cấu hình xây dựng và tích hợp việc tạo gói với phần còn lại của quá trình.

Tôi đã đào sâu trong dự án triển khai web Azure, nhưng tôi không thể tìm thấy bất kỳ tham chiếu nào đến tác vụ CSPack. Có thể có một số phép thuật VS xảy ra ở đây, trừ khi tôi thiếu tệp tham chiếu đến các tác vụ CSPack/Azure. Việc lắp ráp mà tôi đang xem là Microsoft.ServiceHosting.Tools.MSBuildTasks.dll - phản xạ cho tôi biết rằng nhiệm vụ CSPack là ở đó.

Có ai đã sử dụng thành công nhiệm vụ CSPack MSBuild không? Nếu có, bất kỳ gợi ý nào về cách sử dụng nó sẽ rất hữu ích!

Nếu tôi sủa cây hoàn toàn sai, vui lòng cho tôi biết!

Cảm ơn, Erick

Trả lời

7

Nhiệm vụ CSpack là một phần của Microsoft.CloudService.Targets tệp msbuild. Trên một cài đặt mặc định này là

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

Bạn sẽ thấy các tài liệu tham khảo để này trong bất kỳ .ccproj (điện toán đám mây dịch vụ) dự án

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

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

Từ đó bạn có thể nhận định dạng cơ bản và một số biến thể. Ví dụ: đây là mục tiêu CorePublish sử dụng nó

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

Chúng tôi gọi cách này để tạo gói đám mây của chúng tôi. Nếu đây là một kịch bản cụ thể mà bạn cần tư vấn, vui lòng cung cấp chi tiết đó. Cách sử dụng của chúng tôi khá phổ biến, chúng tôi chỉ (như bạn) không quan tâm đến việc sử dụng msbuild để gọi ra dòng lệnh.

Vì vậy, vẽ ra tất cả mọi thứ với nhau, một cách đơn giản có thể phát hành

msbuild MyAzureProject.ccproj /t:CorePublish

hoặc nếu bạn có một giải pháp với các thư mục đa san lấp dự án và muốn đóng gói Release bit

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

+0

Taylor, cảm ơn vì phản ứng. Bạn có thể đăng phần còn lại của tệp MSBuild (chỉ với các phần màu xanh) không? Điều đó sẽ rất hữu ích. Cảm ơn - Erick –

+0

chắc chắn, tôi sẽ đặt nó lại với nhau sau ngày hôm nay và nhận được một cái gì đó cho ya tối nay –

+0

@Taylor bạn đã bao giờ có được một cơ hội để đặt rằng với nhau? Tôi đang gặp vấn đề khi tạo msBuild để tạo gói – Joe

1

Tôi đang sử dụng chúng nhưng tôi có Visual Studio và Azure SDK 1.3 được cài đặt trên máy chủ xây dựng. Tôi không thể tìm thấy bất kỳ cách nào xung quanh đó. Bạn có thể lấy đi bằng cách sử dụng Visual Studio Express trên các máy chủ xây dựng, do đó bạn có thể muốn cho rằng một thử đầu tiên.

+0

Can bạn cho tôi một ví dụ về cách bạn đang sử dụng các nhiệm vụ? Đó là vấn đề đầu tiên mà tôi đang cố gắng giải quyết, vì tôi không tìm thấy bất kỳ ví dụ nào ở đó. –

+0

Tôi chỉ đang sử dụng các loại dự án đám mây trên máy chủ xây dựng của mình. Gọi cspack trực tiếp nằm trong danh sách những việc cần làm của tôi nhưng nó vẫn chưa lên đỉnh. –

1

tôi chỉ sử dụng

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

nơi PackageCommand là những gì bạn sử dụng trong dòng lệnh để gọi cspack.exe.

+0

Cảm ơn câu trả lời Carlos. Tôi đã hy vọng tránh sử dụng dòng lệnh, nhưng tôi có thể kết thúc ở đó. –

Các vấn đề liên quan