ResXResourceWriter切掉文件末尾

时间:2010-06-01 19:47:39

标签: c# .net resx

我正在尝试从字符串字典创建.resx文件。幸运的是.Net框架有一个ResXResourceWriter类。唯一的问题是,当我使用下面的代码创建文件时,我生成的resx文件的最后几行丢失了。我检查了我的词典,它包含了我期望的所有字符串对。

public void ExportToResx(Dictionary<string,string> resourceDictionary, string fileName)
{
    var writer = new ResXResourceWriter(fileName);

    foreach (var resource in resourceDictionary)
    {
        writer.AddResource(resource.Key, resource.Value);
    }
}

不幸的是,显示整个resx文件有点困难,因为它有2198行(应该有2222行),但这是最后一点:

...
2195    <data name="LangAlign_ReportIssue" xml:space="preserve">
2196        <value>Report an Issue</value>
2197    </data>
2198    <data name="LangAlign_Return

顺便说一句,请注意文件在“LangAlign_Return”中的“n”末尾切断。该字符串应为“LangAlign_ReturnToWorkspace”。该文件也应该在第2222行结束。

2 个答案:

答案 0 :(得分:3)

试试这个:

public void ExportToResx(Dictionary<string,string> resourceDictionary, string fileName)
{
    using(var writer = new ResXResourceWriter(fileName))
    {
        foreach (var resource in resourceDictionary)
        {
            writer.AddResource(resource.Key, resource.Value);
        }
    }
}

您需要在编写器上调用Dispose()。 :)

答案 1 :(得分:0)

“LangAlign_ReturnToWorkspace”实际上是这么说的,还是“LangAlign_Return ToWorkspace”?

(在Return和ToWorkspace之间有空格或非打印字符?)

可能是因为错误地生成了elememt名称?

只是一个想法。