Visual Studio - Файл Resx за замовчуванням 'внутрішній' для 'public'


165

Кожен раз, коли я редагую файл ресурсу в VS, він відновлює відповідний код і встановлює модифікатор доступу класу до внутрішнього.
Боліть Ctrl-F -> ReplaceAll кожного разу, коли я редагую Resx. Чи є властивість / налаштування, щоб я можу це зробити за замовчуванням для загальнодоступних?

internal class MyResource {

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

}

Мені потрібно, щоб усі вони internalбули publicвесь час.


@jvanrhyn: Тому що мені потрібно отримати доступ до його менеджера ресурсів з іншого проекту в рішенні.
Робін Мабен

Відповіді:


335

Замість цього ResXFileCodeGeneratorвикористовуйте PublicResXFileCodeGenerator.

Це можна зробити, встановивши це як властивість користувальницького інструмента у вікні властивостей для файлу Resx, до якого потрібно публічно отримати доступ.

Редагувати : Альтернативно, ви можете встановити Модифікатор доступу для всіх, коли ви відкриєте файл resx у Visual Studio. Спадне поле Модифікатор доступу можна знайти у верхній частині форми.


13
(Хороша відповідь; але лише деякі зауваження; це також може бути GlobalResourceProxyGenerator, не просто ResXFileCodeGenerator; зауважте також, що спадне меню "Модифікатор доступу" часто вимикається)
Марк Гравелл

@Anton: Дякую, працює в моєму випадку. Також я помітив, що зміна модифікатора доступу зі спадного меню змінює відповідний інструмент.
Робін Мабен

1
@conqenator: тому я запропонував використати спадне меню Модифікатор доступу як альтернативний спосіб досягти того ж результату :)
Антон

2
BTW, якщо вимкнене меню Модифікатор доступу вимкнено, ви можете спробувати змінити властивість користувальницького інструмента на ResXFileCodeGenerator, якщо це не значення alredy. Принаймні, це працює для мене в проекті MVC на VS 2010.
Мануель Наварро

1
Для мене з використанням Visual Studio 2017 вибір PublicResXFileCodeGeneratorєдиного робить клас Resources публічним, а не його конструктором.
Лоран Мішель

13
  1. Клацніть правою кнопкою миші на файл ресурсу ( resource.resx) => Властивості .

  2. Спеціальний інструмент => Змінити наPublicResXFileCodeGenerator


-7

Мабуть, найпростіший спосіб - це створити похідний клас із Public ctor?

Створений клас:

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

Похідний клас:

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

    }
}

13
Це неможливо. Ви отримаєте помилку CS0060 Невідповідна доступність: базовий клас 'Strings' менш доступний, ніж клас 'PublicStrings'
Девід Гардінер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.