2008-09-26 27 views
22

Đây là những gì tôi muốn làm:Có cách nào để tạo các tệp tài nguyên mạnh mẽ được công khai (trái ngược với nội bộ) không?

Tôi muốn tạo một dự án thư viện chứa các tệp Tài nguyên của tôi (ví dụ: Nhãn giao diện người dùng và điều gì đó). Tôi muốn sau đó sử dụng thư viện tài nguyên cả trong giao diện người dùng và trong Bài kiểm tra của tôi. (Tức là, về cơ bản có một nơi chung cho tài nguyên của tôi mà tôi tham chiếu từ nhiều dự án.)

Thật không may, vì StronglyTypedResourceBuilder (lớp .Net tạo mã cho Tài nguyên) làm cho tệp tài nguyên nội bộ theo mặc định, tôi có thể ' t tham chiếu các tài nguyên mạnh mẽ của tôi trong thư viện từ một dự án khác (ví dụ, giao diện người dùng hoặc kiểm tra của tôi), mà không nhảy qua hoops (ví dụ, một cái gì đó tương tự như những gì được mô tả here, hoặc viết một lớp/hàm bao bọc công khai).

Thật không may, cả hai giải pháp đó đều loại bỏ khả năng giữ cho các tham chiếu được nhập mạnh mẽ.

Có ai tìm thấy cách thẳng thắn để tạo tài nguyên .Net mạnh mẽ có thể được tham chiếu từ nhiều dự án không? Tôi muốn tránh phải sử dụng một sự kiện xây dựng để thực hiện điều này (ví dụ, để làm điều gì đó như thay thế tất cả các trường hợp 'nội bộ' bằng 'công khai', nhưng đó là cơ bản kế hoạch hoàn vốn của tôi nếu tôi không thể tìm thấy một câu trả lời ..

Trả lời

37

Không chắc chắn phiên bản của Visual Studio bạn đang sử dụng, vì vậy tôi sẽ đưa bước cho một trong hai:

VS 2008 - Khi bạn mở file resx theo quan điểm thiết kế, có một tùy chọn ở phía trên bên cạnh Thêm Tài nguyên và loại bỏ tài nguyên, được gọi là Access Modifier, nó là một trình đơn thả xuống nơi bạn có thể thay đổi mã được tạo ra từ bên trong thành công cộng.

VS 2005 - Bạn không có tùy chọn để tạo mã như trong VS 2008. Đó là một tính năng được thêm vào, vì đau đầu này. Có công việc xung quanh mặc dù. Bạn có thể sử dụng trình tạo của bên thứ ba như thế này tool hoặc bạn có thể sử dụng thuộc tính InternalsVisibleTo trong AssemblyInfo.cs của mình để thêm các dự án sẽ có quyền truy cập vào các lớp nội bộ của thư viện tài nguyên của bạn.

+0

Hoàn hảo, Cảm ơn bạn! Tôi đã không nhìn thấy các thuộc tính InternalsVisibleTo trước, nhưng đó là chính xác những gì tôi cần. Nó cho phép tôi giữ mọi thứ đơn giản, sạch sẽ và tôi không phải cài đặt ResXFileCodeGeneratorEx. –

+0

Bước VS 2008 cũng hoạt động cho VS 2010. Cảm ơn! –

2

Visual Studio 2008 cho phép bạn lựa chọn có lớp tài nguyên tạo nên nội hoặc của cộng đồng. Ngoài ra còn có các ResXFileCodeGeneratorEx, mà nên làm điều đó cho Visual Studio 2005.

+0

Tôi đang sử dụng VS 2005, vì vậy ResXFileGeneratorEx sẽ là cách để đi. Cảm ơn câu trả lời của bạn! –

0

Từ các nhà thiết kế bộ dữ liệu và với cửa sổ thuộc tính có thể nhìn thấy, có một tài sản "Modifier" .Đối với các bộ dữ liệu của bạn, có thể nói nội bộ là

Tôi không biết nếu có cài đặt để mặc định tất cả các tập dữ liệu mới thành công khai.

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