2012-10-16 13 views
8

Giả sử chúng tôi có một nhóm hoạt động trên nhiều dự án khác nhau. Mỗi thành viên trong nhóm sử dụng các bộ điều khiển/thành phần trực quan/không nhìn thấy khác nhau trong chu kỳ phát triển của nó. Vì Delphi yêu cầu mỗi thành phần phải được biên dịch và cài đặt trên toàn cầu trong IDE, làm thế nào để quản lý tình huống này trong khi làm việc với dự án được bắt đầu bởi thành viên nhóm khác?Làm thế nào để xử lý các thành phần dự án cụ thể trong Delphi?

Sẽ thật tuyệt nếu tôi có thể kiểm tra nguồn của dự án từ điều khiển phiên bản và có khả năng biên dịch nó ngay lập tức. Tôi không quan tâm hoặc đôi khi không biết những thành phần trực quan hoặc không nhìn thấy nào được yêu cầu cho dự án này, tôi đoán tất cả chúng nên được đưa vào các nguồn dự án.

Có thể có một số công cụ có thể đọc tệp hoặc thư mục dự án chính và biên dịch/cài đặt tất cả các thành phần cần thiết khi tải dự án (và gỡ cài đặt chúng khi dự án bị đóng)?

Làm thế nào để bạn xử lý vấn đề này trong Delphi?

+2

Câu hỏi này có thể có một số câu trả lời cho bạn: http://stackoverflow.com/questions/8957128/setting-up-a-large-software-system-in-delphi. Tuy nhiên, nếu bạn cần chỉnh sửa biểu mẫu, không có cách nào xung quanh phải cài đặt ít nhất các thành phần trực quan. Chúng tôi đã thêm tập lệnh vào kiểm soát nguồn của chúng tôi để tự động gỡ cài đặt và cài đặt các khóa có liên quan trong sổ đăng ký. Không yêu cầu khởi động lại IDE tất nhiên. –

+0

Tôi thường duy trì tệp gói "tất cả các thành phần", cùng với mã nguồn của từng dự án, chứa tất cả các thành phần được sử dụng trong dự án cụ thể. Sau đó tôi chỉ phải mở một gói duy nhất và xây dựng lại nó, để đảm bảo rằng tất cả các thành phần cần thiết được đặt ra, trước khi tôi bắt đầu làm việc trên chính mã nguồn của dự án. – Elling

Trả lời

4

Bất kỳ ai muốn biên dịch một dự án cụ thể trước tiên phải cài đặt bất kỳ thành phần nào dự án đang sử dụng. Không có nhận được xung quanh đó, trừ khi dự án trực tiếp bao gồm các mã nguồn thành phần và instantiates các thành phần trong mã thay vì sử dụng một DFM. AFAIK, không có công cụ IDE nào sẽ cài đặt thành phần (un) tự động trên cơ sở từng dự án cho bạn.

+5

Có một cách để đạt được điều này bằng cách tạo một plugin IDE tự động phát hiện nếu một "gói thành phần cụ thể của dự án" phải được biên dịch lại và cài đặt nó vào IDE khi nhóm dự án được mở và gỡ cài đặt khi nhóm dự án đã đóng cửa. Nhưng để làm được điều này, bạn phải vá và móc vào IDE vì OpenToolsAPI không đủ phong phú để làm điều đó. Điều này cũng yêu cầu gói phải có mã hoàn thiện rõ ràng. –

+1

@AndreasHausladen Thật đáng tiếc là không ai từng thực hiện một plugin IDE như vậy. – Linas

+0

"Bất kỳ ai muốn biên dịch một dự án nhất định trước tiên phải cài đặt bất kỳ thành phần nào dự án đang sử dụng ...". Trên thực tế bạn có thể biên dịch dự án mà không cần cài đặt nhưng không thể chỉnh sửa biểu mẫu. Nếu biểu mẫu phàn nàn chỉ cần nhấn hủy – Maksee

2

Rất khôn ngoan để hạn chế thành phần và thư viện nào sẽ được nhóm của bạn sử dụng. Nếu mỗi thành viên quyết định thành phần nào họ sẽ sử dụng, gói thực thi hoặc gói cuối cùng của bạn sẽ phát triển rất nhiều và bạn có thể có một số không tương thích giữa các thư viện.

Bên cạnh đó, bạn có thể có thêm chi phí mua và cập nhật các thư viện rất giống nhau. Hãy nhớ rằng mỗi khi Delphi được cập nhật, bạn nên mua giấy phép mới từ hầu hết các thư viện đó.

Vì vậy, phương pháp tốt nhất là:

  • hỏi mà mỗi nhà phát triển thư viện đang sử dụng và trao đổi với họ những nhu cầu thực sự của mỗi người;

  • liệt kê những thư viện đó cần thiết và cài đặt chúng trên máy mà bạn sẽ biên dịch mã cuối cùng của mình;

+2

Tôi đồng ý rằng cách tiếp cận của bạn sẽ hoạt động ... NHƯNG nó là IMO rất bất tiện. Điều gì xảy ra nếu nhà phát triển tạo thành phần tùy chỉnh cho chỉ một dự án? Tại sao tất cả các nhà phát triển khác cần phải cài đặt nó? Cũng theo cách này, tôi sẽ phải duy trì tất cả các thành phần được cài đặt này để chắc chắn rằng tất cả chúng đều được cập nhật. Nếu IDE hỗ trợ cài đặt các thành phần cho mỗi dự án thì tất cả những vấn đề này có thể tránh được. – Linas

5

Trong công ty của chúng tôi, chúng tôi có cùng một vấn đề. Chúng tôi giải quyết điều này bằng cách buộc tất cả mọi người phải có tất cả các đường dẫn thư viện cần thiết được thêm vào ide delphi của họ.

Chúng tôi đang sử dụng kho lưu trữ sdk/framwork bổ sung chứa tất cả các thành phần/sdks/khuôn khổ của mọi người. Chúng tôi lưu giữ một tệp văn bản, liệt kê tất cả các libs với phiên bản, cài đặt infos, v.v. Mọi người kiểm tra thư viện mong muốn của họ, vì vậy chúng tôi không có thư viện đôi hoặc các phiên bản khác nhau.

Vì tất cả chúng ta đều làm việc trong Windows và vì Delphi giữ đường dẫn của nó và (afaik) thông tin thành phần được cài đặt trong sổ đăng ký, chúng tôi trích xuất các thông tin này. Chúng tôi lưu trữ cho mỗi phiên bản delphi được sử dụng một tệp .reg trong kho lưu trữ sdk.

Vì vậy, nếu ai đó thay đổi khung, anh ấy cập nhật thông tin cho mọi người trong tệp .reg và cam kết.

ngay bây giờ, nếu ai đó muốn thiết lập máy của họ, họ kiểm tra sdk, thêm ví dụ: xe2.reg thông tin để đăng ký của họ, sau đó kiểm tra các dự án và ... tada. biên dịch.

Chúng tôi chưa cố gắng trích xuất các gói "thành phần đã cài đặt". thats trên danh sách việc cần làm của chúng tôi. Một giải pháp thay thế sẽ là giữ một tập tin batch để xây dựng và cài đặt tất cả các gói sdk cùng một lúc. Nhưng tôi không biết nếu cài đặt các thành phần thông qua commandline có thể trong delphi.

Thứ như trình cài đặt JEDI sẽ đẹp. Trình cài đặt phát hiện các phiên bản Delphi đã cài đặt và xây dựng & cài đặt mọi thứ độc đáo. Một phiên bản có thể cấu hình tự do sẽ đẹp, vì vậy hãy thêm tất cả sdks -> cài đặt trên mỗi phiên bản .. hoàn hảo.