2

我正在尝试从字符串字典创建一个 .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 行结束。

4

2 回答 2

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() 。:)

于 2010-06-01T21:25:22.620 回答
0

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

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

也许这会导致错误地生成 elememt 名称?

只是一个想法。

于 2010-06-01T19:56:44.703 回答