C#如何创建和保存resx文件

时间:2014-10-14 07:44:52

标签: c# xml resx

根据Microsoft Developer Network,可以通过这种方式生成resx文件。 (http://msdn.microsoft.com/en-us/library/gg418542%28v=vs.110%29.aspx

using (ResXResourceWriter resx = new ResXResourceWriter("filename.resx"))
  {
     resx.AddResource("KeyString", "ValueString");         
  }
resx.Generate();

但是,我找不到新生成的resx文件。 (我认为生成的文件是在本地机器中设置的,但它似乎并不存在。)

我一直在寻找(1)如何检查生成的resx文件的位置,以及(2)如何将其保存到文件夹中。 (即将以编程方式生成的resx文件保存到文件夹中,因为我们可以使用" XmlDocument.Save(" FileName")"方法创建和保存xml文件。)

这是我编码的一部分。

    if (saveFileDialog.ShowDialog() == DialogResult.OK) {
        using (ResXResourceWriter resx = new ResXResourceWriter("resxfile.resx")) {                   

            for (int i = 0; i < rowArray.Length; i++) {                    
                string keyStrings = rowArray[i][Key].ToString();     
                string valueStrings = rowArray[i][Value].ToString();
                resx.AddResource(keystrings, valueStrings);
            }
            resx.Generate();
        }                                     
    }

这并不保存应该从&#34; for&#34;生成的resx文件。环。 如果您愿意提供任何见解,我将不胜感激。

1 个答案:

答案 0 :(得分:5)

您不需要专门致电resx.Generate()来创建该文件(如果您没有&#39,它将在Dispose区块末尾的using自动调用; t手动调用它,但如果你这样做,它应该进入使用块:

using (ResXResourceWriter resx = new ResXResourceWriter("filename.resx"))
{
    resx.AddResource("KeyString", "ValueString");
    resx.Generate();
}  

在此之后,您可以在项目的bin\Debugbin\Release文件夹中找到.resx文件,具体取决于配置。

您还可以将文件路径传递给构造函数以指定自定义文件夹,例如:

using (ResXResourceWriter resx = new ResXResourceWriter(@"C:\tmp\sampleResource.resx"))
{
    resx.AddResource("KeyString", "ValueString");
}   

在这种情况下,该文件将显示在C:\tmp

您还可以使用FileStream来控制资源文件的创建位置和方式,例如:

using (FileStream fs = new FileStream(@"C:\tmp\MySuperResource.resx", FileMode.Create))
using (ResXResourceWriter resx = new ResXResourceWriter(fs))
{
    resx.AddResource("Key1", "Value1");
    resx.AddResource("Key2", "Value2");
    resx.AddResource("Key3", "Value3"); 
}