2012-01-14 27 views
6

Tôi có yêu cầu đóng gói và phát hành thư viện điều khiển .NET trên nhiều nền tảng và có câu hỏi về cách tự động triển khai này (hoặc thực hiện hiệu quả như có thể) thông qua các kịch bản xây dựng và cấu hình VS2010.VS2010 xây dựng tập lệnh để gói DLL vào MSI và đăng ký GAC

Thư viện điều khiển sẽ được phát hành dưới dạng phiên bản Silverlight (bản dựng riêng cho phiên bản SL 3.0, 4.0, 5.0) và WPF (các bản dựng riêng cho .NET3.5/.NET4.0). Tôi cũng cần phải chỉ định các phiên bản phát hành và dùng thử của cùng một thư viện. Các phiên bản dùng thử sẽ được phân biệt trong mã với một câu lệnh TRƯỚC tiền xử lý. Cả bản dùng thử và phiên bản đầy đủ sẽ được biên dịch trong chế độ RELEASE.

Tôi tự hỏi làm thế nào để đạt được điều này một cách hiệu quả nhất có thể. Giải pháp VS2010 của tôi hiện có một dự án cho WPF (.NET 4.0) và một dự án riêng biệt cho SL (SL 4.0).

  • Tôi có cần tạo thêm các dự án csproj cho các phiên bản bị thiếu hay không, ví dụ: .NET 3.5 và SL 3.0 và 5.0?
  • Tôi muốn tạo một MSI cho tất cả các tệp DLL Silverlight và một MSI cho tất cả các dll WPF. Tôi có cần phải tạo thêm MSI cho các phiên bản được biên dịch là bản dùng thử không? Điều gì về MSI riêng biệt cho mỗi phiên bản của khung công tác .NET hoặc Silverlight?
  • Có thể đạt được gói triển khai ở trên bằng cách sử dụng build.targets hoặc xây dựng tập lệnh không?

Về cơ bản nếu tôi tạo MSI theo cách thủ công cho tất cả các kết hợp ở trên và thực hiện xây dựng lại đầy đủ sẽ hoạt động, nhưng cũng là một quá trình mất thời gian khi phát hành bản cập nhật. Tôi đang tìm kiếm các gợi ý về cách đạt được điều này với các kịch bản xây dựng, các build.targets, các cấu hình MSI hoặc kết hợp các điều trên.

Cuối cùng khi phân phối lại các thư viện kiểm soát, cài đặt lý tưởng nên dẫn đến đăng ký trong GAC.

Bất kỳ nhận xét/đề xuất nào đều được chào đón.

Trân trọng,

Trả lời

0

Vì hậu thế, tôi đang ghi lại giải pháp mà tôi đã đưa ra nhờ câu trả lời rất thông tin của câu trả lời rất có ý nghĩa authority_tech.

Được giải quyết bằng tệp hàng loạt msdos như sau.

  • Đập ý tưởng #Nếu chuyển đổi thử nghiệm. Thay vào đó, thành phần được cấp phép bởi tệp licx để việc xây dựng bản dùng thử giống như bản phát hành bản phát hành. Điều này có nghĩa chỉ là một giải pháp cho công việc mà xây dựng kết quả đầu ra có nguồn gốc từ
  • Tạo tệp lô để xây dựng lại dự án đầu ra Silverlight và WPF bằng MSBuild, chuyển đổi các công cụ để tạo nhiều phiên bản
  • Sao chép tệp DLL sang cấu trúc thư mục kiểu Nuget, ví dụ: Xây dựng/lib/net40, xây dựng/lib/sl4, xây dựng/lib/sl5 vv ...
  • xáo trộn xây dựng libs tại chỗ
  • Xcopy dụ dự án trên để xây dựng/ví dụ/
  • Sử dụng Powershell để chỉnh sửa dự án ví dụ để tham chiếu đầu ra mới bị xáo trộn.

Để tham khảo, xin vui lòng xem các câu hỏi và câu trả lời sau đây về removing/re-adding referencesediting project files với PowerShell

2

Nếu bạn đang phát hành các phiên bản khác nhau của khung, thì bạn sẽ cần các dự án khác nhau. Bạn có thể có thể thoát khỏi việc chuyển đổi khung đích vào thời gian chạy, nhưng có quá nhiều biến, vào thời điểm bạn nhận được tất cả các số liệu và thử nghiệm, bạn có thể dễ dàng tạo các dự án bổ sung.

Tôi nghĩ sẽ rất đáng để bạn đầu tư vào công cụ Cài đặt như Installshield có hỗ trợ tích hợp cho phần còn lại của chức năng mà bạn mong muốn.

Tôi tin rằng bạn có thể hoàn thành tất cả nhu cầu của mình trong một dự án cài đặt đơn bằng nhiều công tắc và phím người dùng cuối (để kích hoạt cài đặt thử hoặc cài đặt thực), nhưng bạn có thể xem xét tách thử nghiệm và thực tế tùy thuộc vào sơ đồ cấp phép.

Cập nhật

Bạn cũng có thể giải quyết vấn đề này thông qua một giải pháp VS2010 tinh khiết, nó chỉ là phức tạp hơn.

Dựa trên mục tiêu của bạn, bạn sẽ cần có tổng cộng 5 dự án và mỗi giải pháp sẽ có 2 cấu hình, một cho bản phát hành thử nghiệm (nơi xác định trước bộ tiền xử lý).

Bạn có thể có được một giải pháp xây dựng duy nhất chứa tất cả 5 dự án vì bạn có thể tham chiếu đầu ra từ từng dự án riêng biệt trong dự án thiết lập VS.

Khi phát hành, bạn sẽ phải chạy bản dựng hai lần, một lần để phát hành và một lần dùng thử, nhưng bạn có thể dễ dàng tự động hóa điều này bằng MSBuild. Những gì chúng tôi đã làm để giảm bớt gánh nặng xử lý đã tạo ra một cơ sở dữ liệu nhỏ để lưu thông tin cấu hình về sản phẩm (vị trí của các giải pháp, tệp dự án và hội đồng) và ứng dụng UI nhỏ xây dựng ứng dụng bằng cách thay đổi phiên bản trước tiên. ở khắp mọi nơi cần thiết và sau đó xây dựng các giải pháp cài đặt thông qua quá trình xây dựng studio trực quan.

Một lưu ý rất quan trọng mà tôi vừa nhớ khi tôi đang gõ ở trên: tại một thời điểm (có thể đã được sửa), không thể xây dựng dự án thiết lập Visual Studio 2010 thông qua MSBuild, đó là lý do chúng tôi xây dựng thông qua devenv.com.

+0

Cảm ơn thông tin, chắc chắn thú vị để biết về InstallShield. Lý tưởng nhất là tìm kiếm một giải pháp tinh khiết vs2010 mặc dù. Có lẽ thiết lập các giải pháp/dự án khác nhau với việc xây dựng lại tất cả các kịch bản là cách để đi? –

+0

Nếu bạn muốn một giải pháp bản địa, nó chắc chắn là có thể, chỉ cần phần nào làm việc nhiều hơn. Chúng tôi thực sự sử dụng kết hợp các dự án Installshield và so với dự án. Tôi đã cập nhật câu trả lời với thông tin bổ sung hy vọng hữu ích. –

+0

Cảm ơn bạn. Có vẻ hợp lý. Tôi nghĩ rằng tôi sẽ thả #if TRIAL và thay vào đó có một mô hình khóa cấp phép để chuyển đổi nó khi chạy. Điều đó giảm một nửa số lượng các giải pháp/dự án cần thiết. –

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