2011-11-12 23 views
5

Tôi đang làm việc trên một giải pháp trong Visual Studio 2010 Ultimate có chứa hai dự án C#: dự án Biểu mẫu và dự án bảng điều khiển. Theo lập trình, chúng hoàn toàn tách biệt; phần chính của cả hai dự án có thể chạy mà không có dự án khác. Những gì tôi muốn làm là gọi ứng dụng giao diện điều khiển bằng cách nhấn một nút trong ứng dụng Biểu mẫu, với các tùy chọn nhất định được đặt dựa trên ứng dụng Biểu mẫu. Vì vậy, bạn có thể nghĩ về ứng dụng Biểu mẫu về bản chất chỉ là ứng dụng 'trình khởi chạy'. Cách thực hiện điều này ngay bây giờ là sử dụng System.Diagnostics.Process.Start với tham số "cmd" làm tham số đầu tiên và đường dẫn đến thực thi của ứng dụng bảng điều khiển (cộng với đối số CLI) làm tham số thứ hai. Nhưng đây là một giải pháp khủng khiếp, bởi vì nó sẽ phá vỡ khi triển khai đến các máy khác với một trình cài đặt.Gọi một dự án Visual Studio thứ hai được lập trình

Tôi cũng đã thử tạo tham chiếu đến dự án bảng điều khiển trong đối tượng Biểu mẫu, tạo Program trong dự án giao diện điều khiển công khai và tĩnh và gọi phương thức Main của bảng điều khiển dự án, nhưng không có xử lý đầu ra hợp lệ một ngoại lệ được ném ra.

Tôi đã thực hiện nhiều Googling, một số tìm kiếm ở đây trên SO và thậm chí đã kiểm tra 'Câu hỏi tương tự' trên trang gửi và không ai biết cách làm những gì tôi muốn làm. Bất kỳ con trỏ nào có thể đưa tôi đi đúng hướng?

FYI: Tôi biết rằng có thể có mười triệu cách tốt hơn để thực hiện việc này, nhưng tôi có một vài lý do để muốn và cần thực hiện theo cách này. Tôi biết tôi chỉ có thể tạo GUI riêng cho chương trình CLI và sao chép mã có liên quan lên, hoặc kết hợp mọi thứ vào một dự án và tạo một cửa sổ đầu ra riêng biệt hoặc các giải pháp khác như thế. Nhưng tôi cần giải pháp này vì hai lý do: (1) Tôi có một chương trình CLI khá phức tạp hoạt động tốt như một chương trình CLI, và bây giờ cần một cách thân thiện với người dùng để bắt đầu nó, và (2) giải quyết vấn đề theo những cách khác. 't trả lời câu hỏi của "Tại sao bận tâm có một số dự án thực thi trong cùng một giải pháp ở nơi đầu tiên nếu bạn không thể gọi một từ khác?"

Trả lời

5

Cách bạn đang làm việc đó là tốt - nó chỉ cần một chút tinh chỉnh.

Trước tiên, khi bạn khởi chạy, không chạy cmd với tệp thực thi của bạn làm tham số, hãy chạy ứng dụng bảng điều khiển của bạn myapp.exe trực tiếp như lệnh để thực thi trong Process.Start.

Bước tiếp theo là làm cho ứng dụng của bạn chạy từ bất cứ nơi nào nó được cài đặt. Cách tiếp cận dễ nhất này là chỉ cần triển khai cả hai tệp thi hành song song trong cùng một thư mục. Sử dụng Application.StartupPath để tìm thư mục mà ứng dụng Biểu mẫu của bạn đã được khởi chạy từ (và do đó, nơi ứng dụng khác cư trú). Sử dụng Path.Combine(Path.GetDirectory(Application.StartupPath), "myapp.exe") để tạo tên đường dẫn đầy đủ của exe để chạy.

Một tùy chọn khác là sử dụng trình cài đặt để có thể lưu trữ vị trí của ứng dụng khác ở nơi đã biết (ví dụ: khóa đăng ký), nhưng độ phức tạp hơn đối với mức tăng ít (trừ khi bạn cần trình cài đặt vì lý do khác)).

+0

Ack! Tại sao Microsoft không thể làm mọi thứ dễ dàng hơn ?! Cảm ơn rất nhiều vì câu trả lời và lời khuyên. – Mrrvomun

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