2013-01-15 24 views
6

Tôi có một dự án ứng dụng web trong VS2012 mà tôi đang xuất bản bằng cách sử dụng "Gói triển khai web". Tôi muốn gói này bao gồm cài đặt nhóm ứng dụng, cụ thể là tạo nhóm ứng dụng IIS và gán ứng dụng mới được tạo cho nó.Gói triển khai web VS2012 để tạo hồ bơi ứng dụng

Tôi quen với tùy chọn "Bao gồm cài đặt nhóm ứng dụng được sử dụng bởi dự án Web này" khả dụng khi dự án được định cấu hình để sử dụng cá thể IIS (không phải IIS Express), nhưng cấu hình IIS là không một phần của dự án và do đó không được kiểm soát nguồn. Điều gì sẽ xảy ra khi ai đó xây dựng một gói triển khai trên một máy chưa có cấu hình IIS một cách tỉ mỉ? Không lý tưởng.

Làm cách nào khác, tôi có thể đi về việc cài đặt AppPool vào gói triển khai web của mình không? Tôi hiểu rằng nhà cung cấp appPoolConfig chỉ là IIS7 +, tôi ổn với giới hạn đó. Tôi đã đập đầu của tôi chống lại vấn đề này trong quá khứ và không bao giờ tìm thấy một giải pháp. 18 tháng sau, chúng tôi có phiên bản VisualStudio mới và một trang web-xuất bản-đường ống mới, có các tùy chọn mới để giải quyết vấn đề này không? Hoặc có lẽ một cái gì đó tôi bị mất khi tôi lần đầu tiên giải quyết vấn đề này?

Sửa

OK, tôi nhìn thấy những điều sau khi lựa chọn:

  1. Cấu hình dự án của tôi để đồng bộ hóa các thiết lập từ một ví dụ IIS. Như đã đề cập, tôi không phải là một fan hâm mộ của điều này cho rằng nó đặt các thiết lập bên ngoài của dự án, có nghĩa là môi trường phải được cấu hình tỉ mỉ để xây dựng + xuất bản. Thêm vào đó nó kéo theo các thiết lập IIS khác mà tôi không muốn đưa vào.
  2. Tiêm thứ gì đó vào web-publishing-pipeline (WPP) để sửa đổi archive.xml. Tôi đã chơi đùa với điều này trong quá khứ và đã thành công hạn chế. Một vấn đề là đường ống không chính xác hợp tác với việc làm việc trực tiếp trên tệp archive.xml, một vấn đề khác là một số thuộc tính khó hiểu hơn có liên quan, như MSDeploy.MSDeployProviderOptions dường như có một số nhị phân được mã hóa Base64? Không có ý tưởng gì để đưa vào đó.
  3. Tìm "nhà cung cấp" hiện tại có thể làm những gì tôi muốn. Tôi có thể không may mắn ở đây, nhà cung cấp appPoolConfig chỉ dường như muốn đọc/ghi IIS, không, nói, một tệp XML của các thiết lập. Có ai biết khác không?
  4. Viết "nhà cung cấp" của riêng tôi để tạo ra các mục nhập đầu ra kê khai. Tôi không chắc chắn, có thể viết một nhà cung cấp tùy chỉnh ghi vào một tệp kê khai bằng tên của nhà cung cấp hiện tại không? Như trong, MyCustomPoolProvider viết appPoolConfig phần vào tệp kê khai? Điều này nghe có vẻ như một bài tập có khả năng gây đau đớn có thể có hoặc không hoạt động. Tôi vẫn cần phải tìm ra các mã hóa của bất cứ điều gì đang đi vào MSDeploy.MSDeployProviderOptions?

Tôi có cảm giác rằng trở ngại cơ bản với Web Triển khai cho những gì tôi đang cố gắng hoàn thành, là mức độ nghiêm túc của nó dựa vào "nhà cung cấp". Các nhà cung cấp đã tồn tại trước đây được thiết kế chủ yếu để đồng bộ hóa IIS, không phải là phát triển và xuất bản chính. Nó như vậy xảy ra rằng một số các nhà cung cấp có thể được tương đối dễ dàng nối vào thông qua MSBuild, nhưng phần lớn nhấn mạnh vào kéo dữ liệu từ IIS, và đó là điều đó.

Trả lời

1

Bạn hiểu chính xác nhà cung cấp appPoolConfig, ở chỗ nó chỉ có thể đồng bộ hóa giữa các Nhóm ứng dụng và không thể được cung cấp trực tiếp với cấu hình. Những gì bạn có thể làm là giữ một bản sao của appPool được đề cập ở dạng package (ví dụ:msdeploy -verb:sync -source:appPoolConfig=PoolName -dest:package=apppool.zip) và cố gắng chiếm đoạt đường dẫn để cuộc gọi MSDeploy thêm nội dung ứng dụng vào gói, để lại nội dung hiện có tại đó.

Ngoài ra, bạn luôn có thể giữ các gói riêng biệt và triển khai chúng với các lệnh gọi khác nhau tới MSDeploy.

FYI, MSDeploy.MSDeployProviderOptions chỉ đơn giản là phiên bản được mã hóa của các thông số được cung cấp cho nhà cung cấp khi gói được đóng gói. Ví dụ: -source:dirPath=c:\,ignoreErrors=0x10293847 -dest:package=package.zip sẽ đóng gói giá trị ignoreErrors.

+0

Bất kỳ manh mối nào trên mẫu mã hóa cho 'MSDeploy.MSDeployProviderOptions'? Không phải là cái gì đó người ta có thể dễ dàng tiêm vào đường ống WPP, nhưng việc có thể trực tiếp điều chỉnh nội dung của 'archive.xml' sẽ tạo ra nhiều sự linh hoạt. Hãy quên đi các nhà cung cấp, người ta chỉ có thể tạo ra một công cụ tạo ra các xml cần thiết, bó nó, và bạn tốt để triển khai. – Snixtor

+0

Định dạng của archive.xml kèm theo không được xác định. Tuy nhiên, bạn có khả năng có thể tiêm các phần tử của bạn (trừ MSDeployProviderOptions) trực tiếp vào tệp kê khai nguồn * trước * WPP gọi MSDeploy. –

+0

Tệp kê khai nguồn cần phải là bộ sưu tập các tùy chọn * đọc * của nhà cung cấp mặc dù phải không? Như trong, một phần appPoolConfig trong tệp kê khai nguồn vẫn sẽ thử và đọc từ IIS, đó chỉ là bản chất của nhà cung cấp. – Snixtor

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