2010-06-01 2 views
2

문자열 사전에서 .resx 파일을 만들려고합니다. 다행히 .NET Framework에는 ResXResourceWriter 클래스가 있습니다. 유일한 문제는 아래 코드를 사용하여 파일을 만들면 생성 된 resx 파일의 마지막 몇 줄이 사라진다는 것입니다. 나는 내 사전을 검사했고 기대했던 모든 문자열 쌍을 포함하고있다. 이 마지막 조금 2198 (2222 있어야한다) 라인을 가지고 있지만 여기부터ResXResourceWriter 파일 끝 부분을 잘라 내기

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 파일을 보여주기 위해 조금 어렵습니다 : BTW

... 
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 줄에서 끝나야합니다.

답변

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를 호출해야 할 필요가 있었다. :)

0

"LangAlign_ReturnToWorkspace"가 실제로 말하는가, 아니면 "LangAlign_Return ToWorkspace"입니까?

은 (돌아가서 ToWorkspace 사이 공간 혹은 비 인쇄 문자?)

어쩌면이 elememt 이름을 일으키는 것은 잘못 생성 될?

아이디어 만 있습니다.

+0

이 제안을 두 번 선택했지만이 문자열 앞뒤에 인쇄 할 수없는 문자가 없습니다. 나는 당신의 제안을 읽을 때 반쯤은 그것이 문제가 될 것이라고 예상했습니다. 감사합니다. 아론 –

+0

아, 너무 나쁘다. 사전에이 값만 입력하면 같은 오류가 발생합니까? – Andy

+0

사전 작성에 사용 된 XML 파일 (이상한 문자가 남아 있는지 확인)을 편집하여 문제가되는 항목까지 내려갔습니다. 나는이 아래에있는 다른 모든 항목도 보관했다. 파일은 XML 속성 중 하나의 중간과 다른 지점에서 잘려있었습니다. 그래서 ResXResourceWriter 클래스에 의해 만들어진 자리에서 잘라 내기 때문에 내 문자열이 아니라는 것을 알고 있습니다. 흠,이게 무슨 일인지 궁금해. 내 코드는 더 간단 할 수 없다. –

관련 문제