2012-03-06 25 views
5

tôi đang thiết lập một dự án cài đặt cho một giải pháp C# và tôi gặp phải một vấn đề phụ thuộc:dự án cài đặt VS 2010 không mang hội tham chiếu chung cho tất cả các kết quả đầu ra

Trong giải pháp của tôi, tôi có 4 kết quả đầu ra dự án độc lập - một cửa sổ dịch vụ và ba thực thi, tất cả những người chia sẻ giữa chúng một số tài liệu tham khảo.

Tôi cần trình cài đặt để cài đặt tất cả bốn trong số chúng để giải pháp hoạt động.

Tôi đã thiết lập thư mục cài đặt cho từng đầu ra của dự án trong "Thư mục ứng dụng" trong hộp thoại "Hệ thống tệp trên máy đích", đã thêm thành công dự án của dịch vụ cửa sổ thành công trong thư mục của nó. Nhưng khi tôi tiếp tục thử và thêm các kết quả đầu ra của các file thực thi trong các thư mục của chúng, các assembly đã được đưa vào thư mục windows service không được mang vào thư mục thực thi, và sau khi cài đặt, các file thực thi sẽ không chạy vì chúng thiếu phụ thuộc.

Tôi có thể thêm các hội đồng bị thiếu vào thư mục của tệp thi hành theo cách thủ công, nhưng có vẻ như đây không phải là cách thực hiện và có điều tôi thiếu.

Bất kỳ ý tưởng nào?

Trả lời

1

Bạn nên tạo một dự án mới trong giải pháp và đặt "trình cài đặt" làm đầu ra của ứng dụng chính của bạn (hoặc các ứng dụng chính), nó sẽ tự giải quyết các phụ thuộc.

+0

Tôi xin lỗi, nhưng tôi không hiểu bất cứ điều gì ở trên. Tôi nên tạo dự án mới nào trong giải pháp và cho mục đích gì? bạn có ý nghĩa gì khi cài đặt trình cài đặt là đầu ra của (các) ứng dụng chính? hãy cố gắng xây dựng. Cảm ơn. – Eliaz

+0

Có, thiết lập sẽ có đầu ra được đặt thành bất kỳ ứng dụng nào bạn muốn triển khai. Các tài liệu tham khảo nên được giải quyết một mình, và trong các thuộc tính, bạn sẽ có thể định nghĩa theo cách mà các assembly được triển khai. Nhưng im thực sự không chắc chắn nếu chúng ta đang nói về cùng một điều. – squelos

1

Tôi đã có những gì tôi nghĩ là vấn đề ban đầu được mô tả. Tôi có một ứng dụng Winform và một ứng dụng giao diện điều khiển như hai dự án riêng biệt, nhưng một dự án thiết lập duy nhất xử lý cả hai.

Cả ứng dụng Winform và ứng dụng bảng điều khiển đều sử dụng cùng hai cụm bên ngoài: không phải là một phần của giải pháp (tham chiếu đến tệp trong thư mục) và phần kia từ dự án lớp C# (tham chiếu đến dự án).

Điều tôi thấy là trình cài đặt giả định rằng đầu ra của dự án được kết hợp thành một thư mục duy nhất trên máy cài đặt. Vì vậy, tất cả các hội đồng chung cũng sẽ cùng cư trú với các tập tin thực thi cần chúng. Vì vậy, nếu bạn thêm đầu ra của dự án từ tệp thực thi đầu tiên vào thư mục, đó là lý do tại sao bạn thấy tất cả các phụ thuộc của nó xuất hiện, và sau đó khi đầu ra dự án thứ hai được thêm vào, chỉ các assembly chưa được thêm mới xuất hiện.

Không quan trọng nếu bạn tạo thư mục con trong thư mục Ứng dụng, Visual Studio xuất hiện để xử lý Thư mục Ứng dụng dưới dạng toàn bộ ... theo như Đầu ra Dự án (exe, dll và res) có liên quan.

Có hai cách để giải quyết vấn đề này. Đầu tiên là tạo một dự án cài đặt riêng biệt cho mỗi tệp thực thi. Trong một dự án lớn, điều này có thể là rất nhiều dự án thiết lập.

Nếu bạn muốn giữ lại tất cả mọi thứ trong một cài đặt duy nhất, một lựa chọn tốt hơn là sử dụng GAC cho các hội chia sẻ, được mô tả trong một bài viết Stack Overflow đây: Use Visual Studio Setup Project to automatically register and GAC a COM Interop DLL

MSI có thể nhận được công việc làm xong. Nhấp chuột phải vào "Hệ thống tệp trên máy mục tiêu", Thêm, GAC. Nhấp chuột phải vào thư mục đã thêm, Thêm, Đầu ra dự án. Điều đó đảm bảo lắp ráp là gac-ed.

GAC là giải pháp tốt hơn trong tâm trí của tôi, bởi vì hội đồng của bạn được quản lý bởi lớp .NET nếu sau này bạn thực hiện thay đổi và cải tiến cho chúng. Một trong những lợi ích của.NET là để loại bỏ các vấn đề "DLL địa ngục" cũ đã được trong Win 98 và các phiên bản trước của Windows. Tôi khuyên bạn nên sử dụng nó cho mã phổ biến của bạn.

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