Создавать файл ресурсов программно

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

Я нашел несколько примеров, используя ResXResourceWriter, но при попытке открыть его невозможно найти ключ ресурса. Вот что я до сих пор:

private void simpleButton1_Click(object sender, EventArgs e)
{
    using (System.IO.MemoryStream oStream = new System.IO.MemoryStream())
    {
        this.layoutControl1.SaveLayoutToStream(oStream);
        using (ResXResourceWriter oWriter = new ResXResourceWriter(@"..\..\Properties\LayoutControl.resources.Resx"))
        {
            oWriter.AddResource("one", oStream.GetBuffer());
            oWriter.Generate();
            oWriter.Close();
        }
    }

}

private void simpleButton2_Click(object sender, EventArgs e)
{
    ResourceManager rm = new ResourceManager("WindowsFormsApplication1.LayoutControl", Assembly.GetExecutingAssembly());
    var one = rm.GetObject("one");
    Console.WriteLine("");
}

Я создаю ресурс, нажав simpleButton1, затем остановил приложение, добавлю-существующий элемент в свой проект, перекомпилирую и нажмите simpleButton2, затем я получу

MissingManifestResourceException (Не удалось найти какие-либо ресурсы, подходящие для указанной культуры или нейтральной культуры. Убедитесь, что "WindowsFormsApplication1.LayoutControl.resources" был правильно встроен или связан с сборкой "WindowsFormsApplication1" во время компиляции или чтобы все необходимые сборки являются загружаемыми и полностью подписанными.)

Может кто-нибудь дать мне несколько указателей или еще лучше, рабочий пример? И я бы предпочел, чтобы ресурс скомпилировался в "отдельную" сборку, такую ​​как "нормальные" файлы ресурсов.

Ответ 1

Вы довольно близки - базовое имя, которое вы передаете ResourceManager, немного выключено.

Любые файлы resx, которые вы скомпилируете, получают в имени с пространством имен по умолчанию плюс любые папки в пути. В своем сообщении вы должны перейти в "WindowsFormsApplication1.Properties.LayoutControl.resources".