Как запретить Visual Studio создавать dll ресурсов конкретного языка из имен файлов ресурсов?

После переименования встроенных файлов ресурсов с незначительными именами (WelcomeA.rtf и WelcomeB.rtf), чтобы они содержали коды языков (Welcome.en-us.rtf и Welcome.de-de.rtf), сборка .NET начала разделять мои ресурсы на [ Файлы AppName].resources.dll, расположенные в подпапке с языковой кодировкой выходного каталога. Папок de-de и en-us раньше не было и я только переименовывал исходные файлы, не меняя настройки проекта:

D:\[AppName]\BIN\DEBUG\NET5.0-WINDOWS
│   [AppName].deps.json
│   [AppName].dll
│   [AppName].exe
│   [AppName].pdb
│   [AppName].runtimeconfig.dev.json
│   [AppName].runtimeconfig.json
│
├───de-de
│       [AppName].resources.dll
│
├───en-us
│       [AppName].resources.dll
│
└───ref
        [AppName].dll

Мое приложение не поддерживает шаблон I18N, который Visual Studio пытается реализовать здесь.
Я находил и загружал встроенный документ в RichTextBox, делая что-то вроде этого, которое теперь не работает:

private void LoadWelcomeText(string langCode)
{
    Assembly assembly = Assembly.GetExecutingAssembly();
    richTextBox.Document.Blocks.Clear();

    foreach (string s in assembly.GetManifestResourceNames())
    {
        if (s.Contains("Welcome." + langCode + ".rtf"))
        {
            Stream stream = assembly.GetManifestResourceStream(s);
            richTextBox.Selection.Load(stream, DataFormats.Rtf);
            break;
        }
    }
}

Как я могу заставить процесс сборки не реструктурировать архитектуру моего приложения на основе имен исходных файлов?
(Я знаю, что переименование файлов не соответствует шаблону, используемому здесь для угадывания намерения I18N, но я хотел бы решить проблему, а не обойти ее.)

Эти библиотеки DLL с ресурсами для конкретного языка называются сателлитными сборками . Вы можете попробовать найти темы с этим именем, например. вот один.

Sinatr 27.02.2024 14:54

Спасибо, @Sinatr. Я знаю о спутниковых сборках, но большинство ресурсов о них (включая тот, на который вы ссылаетесь) показывают вам, как преодолеть трудности, чтобы заставить их работать. Я бы хотел избежать общения с ними. Я хочу создать небольшое однократно запускаемое приложение, которое должно иметь небольшой флажок в углу, позволяющий менять словари ресурсов для перевода пользовательского интерфейса XAML с динамическими ресурсами. А еще есть текстовый документ, который нужно поменять в коде. Имя файла ресурса также является строкой динамического ресурса. Сборки в GAC устанавливать не нужно, ИМХО :-)

MK-3PP 27.02.2024 15:34
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
146
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Установите ресурс WithCulture в файле csproj.

<EmbeddedResource Include = "Resources\Welcome.en-us.rtf" WithCulture = "false" />

Гоша, спасибо! После того, как вы сказали мне, что искать (WithCulture), я нашел этот более старый пост с той же проблемой. Как это свойство не отображается в окне «Свойства» в VS 2019? Отражение, кто-нибудь? Вам необходимо отредактировать файл проекта в текстовом редакторе. Я вернулся к C# спустя более 10 лет, а VS до сих пор ощущается как какой-то инди-проект на Kickstarter.

MK-3PP 28.02.2024 11:55

Другие вопросы по теме