2008-10-14 20 views
11

Có cách nào để chọn gói designtime trên cơ sở dự án không?Tải gói delig designtime trên cơ sở dự án

Các gói rất hữu ích trong dự án lớn để giữ cho thời gian xây dựng có thể chấp nhận được, nhưng chúng cũng là một pita thực sự trong các dự án lớn đó. Khi một nhà phát triển thêm một gói mới, nó sẽ phá vỡ để xây dựng cho tất cả các gói khác cho đến khi họ cài đặt gói mới trên máy của họ. Và sau đó có phiên bản của các gói ...

Vì vậy, có ai có giải pháp thích hợp cho việc này không? (nó đã làm phiền tôi nhiều năm nay)

Trả lời

8

Tại công việc trước đây của tôi, tôi đã viết một công cụ nhỏ để giúp chúng tôi với các gói phiên bản. Tôi thực sự nên tạo lại công cụ đó trong thời gian rảnh rỗi của tôi và làm cho nó có sẵn. Tuy nhiên, công cụ này không khó để viết, vì vậy có lẽ bạn có thể thực hiện một cái gì đó giống như chính mình.

Về cơ bản nó làm việc như thế này:

  • Subversion repo với tất cả các gói trong thư mục con. Mỗi thư mục gói trong repo có cùng các thư mục con: Lib (cho DCUs), Nguồn, Trợ giúp (nếu cần)
  • Trong thư mục gốc của repo, hãy đặt công cụ cùng với tệp XML.
  • Tệp XML đã chỉ định tất cả thông tin cần thiết cho mỗi gói: thư mục nào chứa DCU, thư mục nào chứa nguồn, lệnh nào cần chạy để được trợ giúp.
  • Công cụ đọc trong XML và hiển thị hộp kiểm danh sách của tất cả các gói có sẵn. Các gói đã cài đặt (đọc từ sổ đăng ký BDS) được đánh dấu chọn.
  • Người dùng có thể thực hiện lựa chọn các gói để cài đặt/gỡ cài đặt.
  • Công cụ thêm/xóa các khóa cần thiết trong sổ đăng ký BDS. Nó thêm thư mục DCU/Lib vào đường dẫn tìm kiếm của IDE, nó thêm thư mục nguồn vào đường dẫn trình duyệt IDE và nó đăng ký lệnh trợ giúp với chuyên gia IDE tùy chỉnh (Chuyên gia này cung cấp một phần mở rộng cho menu trợ giúp mặc định để khởi chạy sự giúp đỡ cho tất cả các gói đã cài đặt)
  • Công cụ này thậm chí sẽ kiểm tra các xung đột và sự phụ thuộc giữa các gói. Ví dụ, cả phiên bản 3 và 4 của các thành phần Raize đều có sẵn mà cả hai không thể hoạt động cùng một lúc.Kiểm tra phụ thuộc rất hữu ích cho các thành phần trong nhà có nguồn gốc từ TurboPower AsyncPro (rất nhiều thành phần trong nhà dựa trên giao tiếp nối tiếp thông qua AsyncPro)

Một phần mở rộng có thể có được để có thể lưu/tải lựa chọn gói và lưu trữ lựa chọn đó với từng dự án để bạn chỉ có thể tải các gói cần thiết cho một dự án cụ thể.

Tôi đã thực hiện tất cả điều này khi công ty chuyển từ Delphi 5/7 sang Delphi 2007. Chúng tôi gặp rất nhiều vấn đề với gói phiên bản trước và muốn có một số cách để phiên bản tất cả các gói khác nhau.

Cách tiếp cận này cung cấp một số lợi thế đẹp:

  • Khi sửa lỗi phải được thực hiện hoặc các phiên bản mới của gói của bên thứ ba được công bố, một người đã phải cam kết những thay đổi để lật đổ. Tất cả các nhà phát triển khác chỉ có thể cập nhật từ phiên bản phụ và có phiên bản mới nhất mà không gặp bất kỳ sự cố nào.
  • Khi gói thành phần mới được thêm vào môi trường, một người phải cam kết tất cả các tệp, thay đổi danh sách gói XML và sau đó các dev khác có thể thực hiện cập nhật lật đổ và chạy công cụ để tích hợp gói dễ dàng.
  • Tất cả các thành phần trong nhà của bên thứ ba và tùy chỉnh hiện đã được phiên bản dễ dàng.
  • Bằng cách bao gồm DCU (và các tệp nhị phân khác) trong repo lật đổ, chúng tôi đảm bảo rằng tất cả các nhà phát triển đã sử dụng cùng một phiên bản đã biên dịch. Trước khi có thể các bộ sưu tập khác nhau đã sử dụng các cài đặt khác nhau khiến một số thành phần hoạt động khác nhau. Khi tất cả các dev khác cuối cùng đã cài đặt Delphi 2007, gói của họ đã được thiết lập trong vòng chưa đầy 10 phút (phần lớn thời gian tải xuống mọi thứ từ repo lật đổ; bản thân công cụ có thể cài đặt 20 gói trong vòng chưa đầy 2 giây). Trước đây, với việc cài đặt thủ công tất cả các gói cho Delphi5/7, có thể mất tối đa 2 ngày để cài đặt mọi thứ.

Điều này không chỉ được sử dụng cho một số thành phần trong nhà, repo cũng bao gồm một số gói thành phần lớn: Raize Components, JCL/JVCL (Sử dụng trình cài đặt của họ thay vì công cụ), DevExpress Quantum Lưới 3 và 4, TurboPower AsyncPro

+0

Điều đó nghe rất hữu ích! Hãy làm cho nó có sẵn. . . –

+0

Vâng, tôi rất muốn làm cho nó có sẵn. Nhưng tôi sẽ phải tạo lại nó từ đầu (không quá vui vẻ và tôi sẽ bỏ lỡ nhiều bản sửa lỗi từ bản gốc) hoặc nhờ người chủ trước đây của tôi mở mã nguồn đó. Đáng để nói chuyện với họ, tôi vẫn có những mối liên hệ tốt ở đó. – Otherside

+0

Điều này rất gần với những gì tôi nhận được trong tâm trí bản thân mình. Tôi đã hy vọng một cái gì đó như thế này đã tồn tại. Tôi hy vọng bạn có thể tìm thấy một số thời gian rảnh rỗi để làm việc về điều này, vì đây là một trong những suy nghĩ buộc các nhà phát triển các môi trường khác. Cảm ơn bạn. – Glenner003

6

Điều này cũng không dễ. Bạn có thể làm điều đó mặc dù, với việc sử dụng của một đăng ký tùy chỉnh hack, và một bds cụ tắt mỗi cấu hình mà bạn đang quan tâm:

Để sử dụng, chỉ cần tạo một shortcut mới và sửa đổi dòng lệnh để vượt qua ví dụ -rMyAlternateBDSReg. Sau đó, sau khi khởi chạy một lần, mục nhập reg là được tạo và họ có thể định cấu hình đăng ký thay thế tất cả những gì họ muốn, xóa các gói, v.v. nếu không có lo lắng về việc cài đặt mặc định .

Từ codegear

Nếu bạn thiết lập cấu hình cho từng dự án, sau đó bạn có thể bắt đầu các phím tắt thích hợp cho các dự án nhất định. Nó không phải là tự động, nhưng nó là tốt hơn so với tất cả mọi thứ có tất cả các thời gian.

Một hiệu ứng phụ tốt đẹp là thời gian tải sẽ được cải thiện.

0

Chúng tôi đặt nguồn cho các gói của chúng tôi trong kiểm soát nguồn cùng với một tệp batchfile mà xây dựng lại chúng. Nếu có một sự thay đổi trong cây cho các gói sau đó chúng tôi xây dựng lại chúng. Điều này không giải quyết cài đặt các gói mới, nhưng có những lần truy cập đăng ký có thể xử lý điều đó, vì vậy có thể chúng tôi có thể bao gồm đoạn mã .reg có thể để xử lý điều đó.

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