Tôi có một giải pháp khá lớn về các dự án C# trong Visual Studio. Tôi muốn chuyển một số dự án đó sang làm việc trong MONO và chạy trên MAC. Tất nhiên một số thứ không hoạt động và một số thứ tôi không muốn chuyển vì chúng không được áp dụng trên MAC.Cách tiêu chuẩn công nghiệp để tổ chức các dự án Visual Studio và mã cho .NET là gì? Phát triển đa nền tảng
Một cách tiếp cận là Giải pháp và Cấu hình dự án. Điều này cho phép tôi loại trừ các dự án mà tôi không muốn xây dựng (tiếc là Visual Studio không làm cho dễ dàng nhìn thấy được nhưng dù sao ...).
Cách tiếp cận thứ hai có thể làm việc song song với cách thứ nhất là sử dụng các chỉ thị trình biên dịch trước như #if MONO và sau đó thực hiện điều gì đó tại điểm đó. Điều này là tốt nhưng sau đó nó tạo ra nhiều phiên bản của cùng một hội đồng. Làm thế nào để phân biệt hai từ mỗi biên dịch bài khác? Đây co phải vân đê?
Ngay cả khi hai phương pháp tiếp cận hàng đầu hoạt động, đôi khi tôi muốn một phần của một dự án lớn. Tôi không muốn trải qua 20 tập tin như vậy và đặt #if MONO phải không? Tôi có thể highjack các tập tin dự án bằng tay nhưng không có tầm nhìn về bất cứ điều gì trong studio trực quan. Không ai khác trong nhóm có thể biết điều gì đang xảy ra trừ khi họ dỡ bỏ dự án và mở XML và xem xét. Điều này nghe khá điên rồ. Để làm cho mọi thứ trở nên tồi tệ hơn, đôi khi dự án tham chiếu một cái gì đó và tôi muốn loại bỏ tham chiếu cho MONO. Bây giờ tôi phải chỉnh sửa csproj.
Tôi có thể chia dự án, nhưng nếu vào thời điểm nào đó tôi muốn chuyển sang một nền tảng khác. Các giao điểm của nền tảng nào cần mã nào có thể phát điên. Để làm cho mọi thứ tồi tệ hơn, tôi có thể có các dự án đề cập đến dự án lớn này mà sau đó có thể phải chia nhỏ. Điều này tất cả các công trình nhưng nó sẽ gây ra quá tải dự án sẽ không?
Tôi không thể tìm thấy giải pháp sạch tốt. Có lời khuyên nào không? Có một tiêu chuẩn cho điều này tôi có thể làm theo. Nếu VS có khả năng hiển thị nhiều hơn trong các chỉnh sửa của tệp csproj, điều này có thể hoạt động.
FWIW: Tôi đã gặp vấn đề tương tự để triển khai thư viện cho cả WPF và Silverlight: trong mã tôi chỉ sử dụng một số #if để chọn chi nhánh tùy thuộc vào nền tảng); đối với các tài liệu tham khảo, tôi đã tạo một số dự án "proxy", một cho mỗi lần triển khai thực sự hữu ích để tham khảo phiên bản đúng của thư viện (điều này dựa trên cấu hình xây dựng hiện tại WPF/SILVERLIGHT); Tôi thừa nhận mã phổ biến trong các dự án chuyên dụng được gắn liền với ".Common". Cuối cùng, điều này khá sạch sẽ và có thể sử dụng được, bạn chỉ cần nhớ thêm mã mới vào các dự án ".ommon". – Pragmateek
Bạn có thể đưa ra một số ví dụ cụ thể về những thứ hoạt động trên nền tảng chứ không phải trên nền tảng khác không? – Pragmateek
Có nhiều loại ví dụ khác nhau.Điều khó chịu nhất là khi bạn có một dự án lớn và bạn chỉ muốn biên dịch một nửa trong MONO cho MAC OSX chứ không phải phần còn lại (vì bạn không cần phần còn lại và vì nó sẽ không biên dịch ngay cả khi bạn cần nó). Tôi có thể chia nó thành hai dự án nhưng nếu tôi có một nền tảng khác (nói MAC Linux), điều này sẽ xảy ra với một số điểm chung với các cửa sổ và những thứ khác chung với MAC. Giờ thì sao? – Mark