2012-02-26 33 views
7

Chúng tôi đã có một ứng dụng web Asp.Net mà chúng tôi đang cố gắng triển khai một thư mục giả, và tôi bắt đầu nghĩ Microsoft đang điên - tại sao rất khó có được WAP để thực hiện một " Local FileSystem "triển khai như một phần của MSBuild?Không thể msdeploy gói web vào thư mục tạm thời?

tôi có thể xây dựng với điều này:

msbuild .\SubSite.csproj "/p:Platform=AnyCPU;Configuration=Release" /t:Package 

Và nhận được một package.zip đẹp mà tôi có thể triển khai đến một trang web ...

Tuy nhiên, tôi có hai dự án trong giải pháp của tôi, mà tôi cần phải kết hợp trước khi gửi chúng, vì vậy tôi muốn triển khai cả hai gói vào một thư mục và sau đó đóng gói lại thư mục đó. Mặc dù documentation trên TechNet to the contrary, nó dường như không thể làm:

msdeploy -verb:sync -source:package=.\SubSite.zip -dest:contentPath=.\Www\SubSite 

Bởi vì bạn nhận được lỗi:

Source (sitemanifest) and destination (contentPath) are not compatible for the given operation.

Có ai có một đề nghị như thế nào tôi có thể triển khai web hai các trang web bên trong nhau mà không cần sao chép thủ công các tệp ra khỏi thư mục "PackageTmp"? Ý tôi là, tôi biết rằng tôi chỉ có thể skip zipping the package and manually copy the files out để thực hiện việc này, nhưng tôi không hài lòng về việc phải tạo mục tiêu tùy chỉnh và không có cách nào khác để tìm ra điều đó chỉ để thực hiện điều gì đó cần được xây dựng.

+1

Thật vậy, một câu trả lời ở đây (ngay cả khi đó là "Điều đó là không thể") sẽ là tuyệt vời. –

Trả lời

1

Chúng tôi cuối cùng đã tìm ra cách để làm điều này, nhưng tôi không thực sự hạnh phúc về nó ;-)

Về cơ bản, (như đã đề cập ở trên), bạn có thể gọi msbuild với mục tiêu được đặt thành _WPPCopyWebApplication. Bạn cũng có thể chỉ định/ghi đè thuộc tính WebProjectOutputDir khi bạn làm điều đó. Một cái gì đó như thế này (trong đó $ {name} là biến chúng ta đang sử dụng)

msbuild ${SourcePath}\Www\UI\UI.csproj "/p:Platform=AnyCPU;Configuration=Release;WebProjectOutputDir=${OutputPath}\AppRoot" "/t:_WPPCopyWebApplication" 
msbuild ${SourcePath}\Www\Mobile\Mobile.csproj "/p:Platform=AnyCPU;Configuration=Release;WebProjectOutputDir=${OutputPath}\AppRoot\Mobile" "/t:_WPPCopyWebApplication" 
msbuild ${SourcePath}\Www\Service\WebService.csproj "/p:Platform=AnyCPU;Configuration=Release;WebProjectOutputDir=${OutputPath}\AppRoot\WebServices" "/t:_WPPCopyWebApplication" 

Sau đó chúng tôi có thể đóng gói lên toàn bộ "AppRoot" trong một bước riêng biệt.

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