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

Hir*_*oki 2 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();
Run Code Online (Sandbox Code Playgroud)

但是,我找不到新生成的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();
        }                                     
    }
Run Code Online (Sandbox Code Playgroud)

这不保存应该从"for"循环生成的resx文件.如果您愿意提供任何见解,我将不胜感激.

w12*_*128 5

你不需要专门调用resx.Generate()来创建文件(如果你没有手动调用它,它将Disposeusing块的末尾自动调用),但是如果你这样做,它应该进入using块:

using (ResXResourceWriter resx = new ResXResourceWriter("filename.resx"))
{
    resx.AddResource("KeyString", "ValueString");
    resx.Generate();
}  
Run Code Online (Sandbox Code Playgroud)

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

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

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

在这种情况下,文件将出现在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"); 
}        
Run Code Online (Sandbox Code Playgroud)