以编程方式创建资源文件

12

我想创建一个资源文件(为部署做准备),填入某些设置(大型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个回答

8

您已经很接近了——您传递给ResourceManager的baseName有些不对。

任何您编译的resx文件都会以默认命名空间加上路径中的任何文件夹来命名。在您的帖子中,您应该传递"WindowsFormsApplication1.Properties.LayoutControl.resources"。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接