2010-10-21 34 views
6

Tôi đang trong dự án C#, trong dự án này tôi tham chiếu (sử dụng tham chiếu dự án) một thư viện lớp khác được viết bằng vb.net.Xử lý các dự án C# và VB.net trong cùng một giải pháp

Bây giờ, khi tôi nhấp chuột phải và xem định nghĩa trên lớp. Nó không đưa tôi đến mã nguồn chính xác trong dự án vb.net, thay vào đó nó đưa tôi đến một đại diện C# được tạo động của lớp vb.net.

Tôi đã thử nghiệm ngược lại, bắt đầu với dự án vb.net và tham chiếu dự án aC#, lần này trên định nghĩa chế độ xem nhấp chuột phải, nó đưa tôi đến trình khám phá mã, vì vậy, không phải bản gốc mã để chỉnh sửa.

Nếu cả hai dự án đều có cùng ngôn ngữ, mọi thứ hoạt động như độc đáo.

Có một lời giải thích cho điều này? Và có thể là một giải pháp cho phép điều hướng mã dễ dàng giữa các dự án của các ngôn ngữ khác nhau?

Để tái sản xuất:

  1. Tạo một dung dịch trắng
  2. Thêm aC# lớp thư viện
  3. Thêm một thư viện lớp vb.net
  4. Trong thư viện lớp vb.net, class1 - tạo ra bất kỳ phương pháp cũ. (Không bắt buộc)
  5. Trong C# lớp, thêm một tham chiếu đến lớp vb.net, ví dụ:

    VBClassLibrary.VBClass myVBClass = new VBClassLibrary.VBClass();

Bây giờ, nhấp chuột phải vào VBCLass và chọn "Chuyển đến định nghĩa".

Lưu ý nơi bạn kết thúc ....

Trả lời

7

Không có gì bạn đang làm sai ở đây. Đây là một hiệu ứng phụ không may của Visual Studio được thiết kế như thế nào. Khi bạn có hai dự án bằng các ngôn ngữ khác nhau, tham chiếu giữa chúng không hoạt động giống như tham chiếu dự án mà thay vào đó là một tham chiếu tệp.

Dự án tham chiếu dự án có cùng ngôn ngữ dùng chung một dịch vụ ngôn ngữ. Do đó, nó kiểm soát tất cả mã của nó và có thể cung cấp các lợi ích nội dung trực tiếp đặc biệt. Cái chính là định nghĩa goto và intellisense tức thời. Chỉ có không có cơ sở trong Visual Studio ngày hôm nay để cho phép các dịch vụ ngôn ngữ để giao tiếp với nhau trên ranh giới tham chiếu như bạn mong muốn.

+3

Tôi đã chạy vào cùng một điều chính xác. Một tác dụng phụ gây phiền nhiễu khác là thông tin thẻ

không vượt qua ranh giới ngôn ngữ trong IDE. – RQDQ

0

Đối với "goto definiton", bạn có thể sử dụng thay vào đó "điều hướng đến" (ctrl + commma)

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