2009-05-14 63 views
16

Tôi đang phát triển một ứng dụng dựa trên GUI trong MS Visual Studio 2005, tôi chỉ muốn biết nếu có thể sử dụng cả VB.NET và C# trong cùng một dự án. Hoặc tôi có thể bao gồm một mô-đun được viết bằng C# trong dự án VB.NET của tôi không?Sử dụng VB.NET và C# trong cùng một ứng dụng?

Tôi có một lớp được viết bằng C# mà tôi muốn sử dụng trong dự án dựa trên VB.NET của mình, vì vậy nếu tôi có thể bao gồm và gọi hàm từ dự án đó, tôi sẽ không phải viết lại lớp đó trong VB.NET .

Vì vậy, hãy trợ giúp tôi vì tôi mới làm quen với lập trình .NET.

Trả lời

16

Tôi chưa bao giờ tự làm, nhưng tôi biết bạn có thể biên dịch mã C# thành dll và sau đó tải và tham khảo dll trong dự án VB của bạn.

Từ "Calling C# class in VB.net":

Tôi nghĩ rằng mã C# mà bạn muốn sử dụng phải được biên soạn như một DLL. Khi đã hoàn thành , hãy thêm tham chiếu vào dự án VB.Net của bạn, nhập không gian tên bạn cần và sau đó bạn có thể sử dụng mã C# .

Xem thêm How To: Create and Use C# DLLs (từ MSDN, cho VS2005)

+0

Cảm ơn bạn rất nhiều Jared đã trả lời nhanh chóng ... –

26

Tôi chỉ muốn biết rằng là nó có thể sử dụng cả hai VB và C# trong cùng một dự án.

Không, không phải trong cùng một dự án . Mặt khác, bạn có thể sử dụng chúng trong cùng một giải pháp .

Hoặc tôi có thể đưa mô-đun được viết bằng C# vào dự án VB.net của mình không.

Tôi đề xuất bạn tạo một giải pháp chứa hai dự án: một trong C# tạo thành thư viện mà bạn sử dụng từ dự án VB của mình. Điều này là đơn giản, dễ bảo trì và dễ mở rộng.

+0

cảm ơn bạn rất nhiều vì câu trả lời nhanh như vậy ... Tôi nghĩ những gì bạn đã nói với tôi giống như Jared nhưng dễ làm hơn, vì vậy tôi sẽ đi với giải pháp của Jared ... –

+0

Tại sao lại là downvote? –

9

Bạn cũng muốn đảm bảo rằng mã C# của bạn tuân thủ CLS. Điều này có nghĩa là nó sẽ không công khai bất kỳ chức năng nào mà các ngôn ngữ .NET khác sẽ không hiểu (ví dụ ints unsigned - không tồn tại trong VB, hoặc các lớp khác nhau theo từng trường hợp - vì VB không phân biệt chữ hoa chữ thường). Để làm điều này, bạn cần phải thêm một thuộc tính để trình biên dịch sẽ tăng lỗi nếu bạn đã phá vỡ bất kỳ nguyên tắc nào. This article cho bạn thấy làm thế nào để làm điều này:

Các CLSCompliantAttribute thể được áp dụng để lắp ráp, mô-đun, loại, và các thành viên.

Đối với đánh dấu toàn bộ lắp ráp như CLS Tuân theo cú pháp sau được sử dụng

using System; 
[assembly:CLSCompliant(true)] 

Đối với đánh dấu một phương pháp cụ thể như CLS Tuân theo cú pháp sau được sử dụng

[CLSCompliant(true)] 
public void MyMethod()` 
+1

+1 - Điểm tốt –

+0

@Martin - Kể từ VB8 (2005), VB hỗ trợ các số nguyên không dấu. –

+0

Ah, sai lầm của tôi - Tôi không phải là lập trình viên VB.Họ vẫn không CLS tuân thủ mặc dù vậy các lỗi vẫn sẽ được gắn cờ mặc dù tôi đoán bạn có thể bỏ qua nó trong trường hợp cụ thể này. –

0

Nếu bạn chỉ có kế hoạch sử dụng các mô-đun trong các dự án Visual Basic, sau đó bạn nên xem xét chỉ cần chuyển đổi mã để Visual Basic. Nếu bạn cần sử dụng mô-đun trong cả hai chương trình C# và VB.NET tôi sẽ sử dụng một trong các giải pháp được đăng ở trên

Bạn có thể thử một cái gì đó như * Convert C# to VB.NET. Nó chuyển đổi mã C# thành VB.NET. Tôi sử dụng trang này độc quyền khi tôi phải chuyển đổi một cái gì đó tôi tìm thấy trên mạng được viết bằng C#.

3

Đặt mã VB.NET và C# trong các dự án riêng biệt. (Tôi đang sử dụng cả VB.NET và C# trong dự án mã nguồn mở của tôi, http://msquant.sourceforge.net/ và nó hoạt động tốt).

Bạn không cần phải lo lắng về DLL, chỉ cần tham khảo dự án (sử dụng tab "Project" trong hộp thoại "Add Reference"). Ví dụ. nếu bạn cần sử dụng một hàm trong C# code/project, hãy thêm một tham chiếu trong dự án VB.NET vào dự án C#.

2

Bạn cũng phải biết rằng nếu bạn có dự án VB.NET với dự án C# trong cùng một giải pháp với một trong số chúng có tham chiếu đến khác, các thay đổi sẽ được áp dụng cho dự án khác sau khi xây dựng lại dung dịch. Nó giống như có tham chiếu nhị phân, nhưng với khả năng thay đổi mã trên cùng một giải pháp.

Cá nhân, tôi không thích điều này, nhưng tôi luôn trong tình huống mà tôi sửa đổi mã trong dự án tham chiếu và không biết tại sao các thay đổi của tôi không có trong mã mà tôi sử dụng và tôi hình nó ra, oohhhh, tôi phải xây dựng lại.

Để được trợ giúp tạm thời, có thể chấp nhận được nhưng không thể lập trình hàng ngày.

3

Bạn không thể sử dụng tệp C# và tệp VB trong cùng một dự án. Tuy nhiên, bạn có thể có các dự án VB và C# trong cùng một giải pháp và tham khảo chúng.

Trong mã của bạn, bạn có thể sử dụng:

Imports namespace 

hoặc

using namespace 

Khi tài liệu tham khảo đã được thêm vào dự án thích hợp xây dựng các giải pháp, và bạn tốt để đi.

Bạn cũng có thể tạo Thư viện VB.NET trong một giải pháp riêng biệt, biên dịch và nhập DLL vào Dự án C# hoặc ngược lại.

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