Browse Source

Use .resx file extension when saving resources in XML format.

pull/1213/head
Daniel Grunwald 8 years ago
parent
commit
80a4d951a7
  1. 14
      ICSharpCode.Decompiler/CSharp/WholeProjectDecompiler.cs
  2. 1
      ILSpy/Languages/CSharpLanguage.cs

14
ICSharpCode.Decompiler/CSharp/WholeProjectDecompiler.cs

@ -332,6 +332,7 @@ namespace ICSharpCode.Decompiler.CSharp @@ -332,6 +332,7 @@ namespace ICSharpCode.Decompiler.CSharp
if (r.Name.EndsWith(".resources", StringComparison.OrdinalIgnoreCase)) {
bool decodedIntoIndividualFiles;
var individualResources = new List<Tuple<string, string>>();
try {
var resourcesFile = new ResourcesFile(stream);
if (resourcesFile.AllEntriesAreStreams()) {
@ -343,7 +344,8 @@ namespace ICSharpCode.Decompiler.CSharp @@ -343,7 +344,8 @@ namespace ICSharpCode.Decompiler.CSharp
}
Stream entryStream = (Stream)value;
entryStream.Position = 0;
WriteResourceToFile(Path.Combine(targetDirectory, fileName), (string)name, entryStream);
individualResources.AddRange(
WriteResourceToFile(Path.Combine(targetDirectory, fileName), (string)name, entryStream));
}
decodedIntoIndividualFiles = true;
} else {
@ -352,10 +354,16 @@ namespace ICSharpCode.Decompiler.CSharp @@ -352,10 +354,16 @@ namespace ICSharpCode.Decompiler.CSharp
} catch (BadImageFormatException) {
decodedIntoIndividualFiles = false;
}
if (!decodedIntoIndividualFiles) {
if (decodedIntoIndividualFiles) {
foreach (var entry in individualResources) {
yield return entry;
}
} else {
stream.Position = 0;
string fileName = Path.ChangeExtension(GetFileNameForResource(r.Name), ".resource");
WriteResourceToFile(fileName, r.Name, stream);
foreach (var entry in WriteResourceToFile(fileName, r.Name, stream)) {
yield return entry;
}
}
} else {
string fileName = GetFileNameForResource(r.Name);

1
ILSpy/Languages/CSharpLanguage.cs

@ -399,6 +399,7 @@ namespace ICSharpCode.ILSpy @@ -399,6 +399,7 @@ namespace ICSharpCode.ILSpy
protected override IEnumerable<Tuple<string, string>> WriteResourceToFile(string fileName, string resourceName, Stream entryStream)
{
if (fileName.EndsWith(".resource", StringComparison.OrdinalIgnoreCase)) {
fileName = Path.ChangeExtension(fileName, ".resx");
using (FileStream fs = new FileStream(Path.Combine(targetDirectory, fileName), FileMode.Create, FileAccess.Write))
using (ResXResourceWriter writer = new ResXResourceWriter(fs)) {
foreach (var entry in new ResourcesFile(entryStream)) {

Loading…
Cancel
Save