Visual Studio - Resx File mặc định 'nội bộ' thành 'công khai'


165

Mỗi lần tôi chỉnh sửa một tệp tài nguyên trong VS, nó sẽ tạo lại mã tương ứng và đặt bộ sửa đổi truy cập lớp thành bên trong.
Đó là một nỗi đau với Ctrl-F -> Thay thế mỗi khi tôi chỉnh sửa resx. Có thuộc tính / cài đặt để tôi có thể mặc định công khai này không?

internal class MyResource {

     internal static global::System.Resources.ResourceManager ResourceManager {...}

}

Tôi cần tất cả những thứ đó internalpublictất cả thời gian.


@jvanrhyn: Bởi vì tôi cần truy cập trình quản lý tài nguyên của nó từ một dự án khác trong giải pháp.
Robin Maben

Câu trả lời:


334

Thay vì ResXFileCodeGenerator, sử dụng PublicResXFileCodeGenerator.

Bạn có thể làm điều này bằng cách thiết lập này như là công cụ Custom sở hữu trong tài sản Window cho các file resx bạn muốn truy cập công cộng để.

Chỉnh sửa : Luân phiên, bạn có thể đặt Công cụ sửa đổi truy cập thành công khai khi bạn mở tệp resx trong Visual Studio. Hộp thả xuống Bộ điều chỉnh truy cập có thể được tìm thấy ở đầu biểu mẫu.


13
(Tốt câu trả lời, nhưng chỉ một số ghi chú, nó cũng có thể là GlobalResourceProxyGenerator, không chỉ ResXFileCodeGenerator; và cũng lưu ý rằng "Truy cập Modofier" thả xuống là thường vô hiệu hóa)
Marc Gravell

@Anton: Cảm ơn, làm việc trong trường hợp của tôi. Ngoài ra, tôi nhận thấy rằng việc thay đổi công cụ sửa đổi truy cập từ trình đơn thả xuống sẽ thay đổi công cụ tương ứng.
Robin Maben

1
@conqenator: đó là lý do tại sao tôi đề xuất sử dụng trình đơn thả xuống Access Modifier như một cách khác để đạt được kết quả tương tự :)
Anton

2
BTW nếu thả xuống Bộ điều chỉnh truy cập bị tắt, bạn có thể thử thay đổi thuộc tính Công cụ tùy chỉnh thành ResXFileCodeGenerator, nếu đó không phải là giá trị hợp lý. Ít nhất điều đó làm việc cho tôi trong một dự án MVC trên VS 2010
Manuel Navarro

1
Đối với tôi với Visual Studio 2017, việc chọn PublicResXFileCodeGeneratorduy nhất làm cho lớp Tài nguyên công khai, không phải là hàm tạo của nó.
Laurent Michel

13
  1. Nhấp chuột phải vào tệp Tài nguyên ( resource.resx) => Thuộc tính .

  2. Công cụ tùy chỉnh => Thay đổi thànhPublicResXFileCodeGenerator


-7

Có lẽ cách dễ nhất là tạo một lớp dẫn xuất với một ctor công cộng?

Lớp được tạo:

 [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
    internal Strings() {
    }

Lớp dẫn xuất:

public class PublicStrings : Strings
{
    /// <summary>
    /// Public localization Strings.
    /// </summary>
    public PublicStrings()
    {

    }
}

13
Điều này là không thể. Bạn sẽ gặp lỗi CS0060 Khả năng truy cập không nhất quán: lớp cơ sở 'Chuỗi' khó truy cập hơn lớp 'PublicStrings'
David Gardiner
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.