2013-02-11 20 views
32

Tôi đã thừa kế một dự án trang web VS2012 rất lớn (không phải ứng dụng web) và đang cố gắng tự động hóa việc triển khai nó. Có rất nhiều tài liệu tham khảo vòng tròn trong dự án để làm cho nó được biên dịch trước bằng cách sử dụng aspnet_compiler.exe Tôi phải bật các tên cố định. Vấn đề với nó là nó gây ra việc xây dựng để mất khoảng 20 phút trên lõi tứ của tôi, ram 16GB, máy phát triển ssd. Các nhà phát triển trước đó đã không phải đối phó với điều này vì ông sẽ chỉ sao chép toàn bộ nguồn vào máy chủ web sản xuất.Làm thế nào để sử dụng dòng lệnh msbuild để triển khai dự án VS2012 Web Site mà không biên dịch trước nó?

Vì vậy, trước khi tôi giải quyết vấn đề tham chiếu vòng tròn, tôi muốn ít nhất tự động triển khai dự án bằng cách sử dụng msdeploy. Tôi có thể sử dụng các hồ sơ xuất bản trong studio trực quan và nó thực hiện chính xác những gì tôi muốn:

  1. Xây dựng DLL tham chiếu và thêm chúng vào dự án.
  2. Liệu web.config có chuyển đổi hay không.
  3. Thậm chí không cố gắng xây dựng trang web mà chỉ gói vào một tệp zip cho tôi.

Những gì tôi không thể tìm ra cho cuộc sống của tôi là làm thế nào để có được MSBuild.exe để làm điều đó chính xác cùng một điều!

MSBuild.exe WebProject.vs2012.sln /m /T:Build 
    /p:Configuration=Release`;DeployOnBuild=true`;PublishProfile=TestDeploy 

Lệnh trên vẫn cố gắng thực thi aspnet_compiler không phải là thứ tôi muốn. Hồ sơ xuất bản nói rằng nó không nên được biên dịch trước ... nhưng trong các bản ghi tôi thấy nó thực hiện nó.

Vì vậy: Làm cách nào tôi có thể sử dụng msbuild để triển khai Dự án Trang web mà không cần biên dịch trước nó?

Trả lời

49

Đối với dự án trang web, quy trình xuất bản không bị bỏ qua trong quá trình xây dựng. Đối với dự án trang web vì không có quy trình xây dựng chính thức, không có gì để chúng tôi thực sự mở rộng.

Lưu ý: các nội dung bên dưới yêu cầu phải có VS 2012 (hoặc VS2010 cho vấn đề đó) và Azure SDK trên đó. Các tính năng không được bao gồm trong thả RTM của VS2012.

Sau khi tạo một hồ sơ công bố trong VS sau đây được tạo ra:

  1. Một công khai hồ sơ (file .pubxml) dưới App_Data/PublishProfiles
  2. Một website.publishproj trong thư mục gốc của trang web

Mục đích của website.publishproj là để tạo điều kiện xuất bản dòng lệnh. Đây là thông tin điền vào cho số .csproj/.vbproj mà bạn thường nhận được khi sử dụng Dự án ứng dụng web.

Nếu bạn muốn tự động xuất bản, bạn có thể sử dụng lệnh như sau.

msbuild.exe website.publishproj /p:DeployOnBuild=true 
    /p:PublishProfile=<profile-name-no-extension> /p:VisualStudioVersion=11.0 

Bạn không cần phải chỉ định mục tiêu nào được gọi.

Về thông báo trong VS rằng trang web đang được biên dịch trước, đó là lỗi. Nó chạy thông qua một biên dịch trước nhưng xuất bản sử dụng các thiết lập trong hồ sơ. Lỗi đó phải được sửa trong Visual Studio Update 1. Sau khi cài đặt, bạn sẽ không thấy bước biên dịch trước không cần thiết. Vui lòng cho tôi biết nếu bạn vẫn thấy điều đó.

+0

Tuyệt vời! Tôi đã tìm cách để làm điều này trong nhiều ngày! Cảm ơn! –

+6

Tôi đã xem xét tất cả. Không có website.publishproj nào được tạo cho dự án của tôi. Tôi có Update2 cho VS2012 bao gồm Azure SDK. Tôi có cùng một vấn đề dòng lệnh để xuất bản dự án của tôi từ một máy chủ xây dựng TeamCity. – Syska

+0

Tôi biết điều này là cũ nhưng nếu bạn có một dự án trang web và bạn chỉ muốn triển khai tệp vừa được đăng ký chứ không phải toàn bộ trang web. –

1

Trong khi câu trả lời Sayed Ibrahim Hashimi của đã giúp tôi phần nào, đây là những gì tôi tìm thấy là cần thiết cho VS2012:

Sau khi cài đặt Azure SDK, tôi đã tạo ra một tập tin công khai hồ sơ, trong đó tạo ra một thư mục PublishProfiles trong Properties thư mục của dự án của tôi. Bên trong thư mục mới này, hai tệp xml có tên là my_sample_PublishProfile_Foo.pubxmlmy_sample_PublishProfile_Foo.pubxml.user nơi được tạo.

Sử dụng .pubxml, tôi có thể công bố với msbuild như thế này:

c:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe "C:\...\UI.csproj" /p:DeployOnBuild=true /p:PublishProfile="C:\...\PublishProfiles\my_sample_PublishProfile_Foo.pubxml" /p:VisualStudioVersion=11.0 

Hãy nhớ để chạy các tập tin thực thi có chứa kịch bản này với quyền Administrator.

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