根据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文件.如果您愿意提供任何见解,我将不胜感激.
你不需要专门调用resx.Generate()来创建文件(如果你没有手动调用它,它将Dispose在using块的末尾自动调用),但是如果你这样做,它应该进入using块:
using (ResXResourceWriter resx = new ResXResourceWriter("filename.resx"))
{
resx.AddResource("KeyString", "ValueString");
resx.Generate();
}
Run Code Online (Sandbox Code Playgroud)
在此之后,您可以在项目bin\Debug或bin\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)