C# ResXResourceWriter删除文件的结尾

C# ResXResourceWriter删除文件的结尾,c#,.net,resx,C#,.net,Resx,我正在尝试从字符串字典创建一个.resx文件。幸运的是.Net framework有一个ResXResourceWriter类。唯一的问题是,当我使用下面的代码创建文件时,生成的resx文件的最后几行丢失了。我查了查字典,它包含了我所期望的所有字符串对 public void ExportToResx(Dictionary<string,string> resourceDictionary, string fileName) { var writer = new ResXRe

我正在尝试从字符串字典创建一个.resx文件。幸运的是.Net framework有一个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);
    }
}
public void exportoresx(字典资源字典,字符串文件名)
{
var writer=新的ResXResourceWriter(文件名);
foreach(resourceDictionary中的var资源)
{
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
。。。
2195
报告一个问题
2197
2198是“LangAlign_ReturnToWorkspace”真的这么说,还是“LangAlign_ReturnToWorkspace”

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

也许这是导致elememt名称生成错误的原因

只是个主意。

试试这个:

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);
        }
    }
}
public void exportoresx(字典资源字典,字符串文件名)
{
使用(var writer=newresxresourceswriter(文件名))
{
foreach(resourceDictionary中的var资源)
{
writer.AddResource(resource.Key、resource.Value);
}
}
}

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

我只是仔细检查了这个建议,但是在这个字符串的前后没有非打印字符。当我读到你的建议时,我有点预料到这是个问题。谢谢你,AaronAh,太糟糕了,值得一试。如果只将此值放入字典中,是否会出现相同的错误?我编辑了用于创建字典的XML文件(确保保留任何奇怪的字符),直到出现问题的条目。我还保留了下面的所有其他条目。文件在一个不同的位置和中间的XML属性中被切断。因此,我知道它不是我的字符串,因为它在ResXResourceWriter类创建的位置断开。嗯,我想知道这是怎么回事。我的代码再简单不过了。