1

resx ファイルを作成してストリームに書き込もうとしているので、すぐにファイルに保存するのではなく、文字列として返すことができます。ただし、そのストリームを読み込もうとすると、空です。ここで何が間違っていますか?エントリがnullでないことを確認しました。ディスクに正常に保存する ResXResourceWriter コンストラクターを実際に使用できますが、一時ファイルの使用を避けようとしています。また、ループ前のストリームの長さが 0k で、ループ後のストリームの長さが約 8k であることがわかります。

using (var stream = new MemoryStream())
{
    using (var resx = new ResXResourceWriter(stream))
    {
        // build the resx and write to memory
        foreach (var entry in InputFile.Entries.Values)
        {
            resx.AddResource(new ResXDataNode(entry.Key, entry.Value) { Comment = entry.Comment });
        }

        var reader = new StreamReader(stream);
        var text = reader.ReadToEnd(); // text is an empty string here!

        return null;
    }
}
4

1 に答える 1

2

読み込もうとする前に、出力/ストリームをフラッシュしてリセットする必要があります。これは、およびを使用して機能するはずGenerateですPosition

resx.Generate();
stream.Position = 0;
var reader = new StreamReader(stream);
var text = reader.ReadToEnd();
return text;
于 2013-09-23T18:13:42.940 に答える