From c23522dca18d7bafaf6240aace4d02661b235c05 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Wed, 13 Feb 2019 18:17:54 +0100 Subject: [PATCH] Add BAML decompiler engine from dnSpy. --- .../Metadata/AssemblyReferences.cs | 5 + .../Cases/AttachedEvent.xaml | 2 +- .../Cases/AvalonDockBrushes.xaml | 38 +- .../Cases/AvalonDockCommon.xaml | 24 +- .../Cases/EscapeSequence.xaml | 26 +- .../Cases/Issue445.xaml | 22 +- .../Cases/MarkupExtension.xaml | 11 +- .../Cases/MyControl.xaml | 8 +- .../Cases/NamespacePrefix.xaml | 17 +- .../Cases/Resources.xaml | 14 +- ILSpy.BamlDecompiler.Tests/Cases/Simple.xaml | 2 +- .../Cases/SimpleDictionary.xaml | 2 +- .../Cases/SimpleNames.xaml | 2 +- .../Cases/SimplePropertyElement.xaml | 7 +- ILSpy.BamlDecompiler/Baml/BamlContext.cs | 97 + ILSpy.BamlDecompiler/Baml/BamlDocument.cs | 39 + ILSpy.BamlDecompiler/Baml/BamlNode.cs | 164 ++ ILSpy.BamlDecompiler/Baml/BamlReader.cs | 259 ++ ILSpy.BamlDecompiler/Baml/BamlRecords.cs | 992 +++++++ ILSpy.BamlDecompiler/Baml/BamlWriter.cs | 65 + ILSpy.BamlDecompiler/Baml/KnownMembers.cs | 297 +++ ILSpy.BamlDecompiler/Baml/KnownThings.cs | 80 + ILSpy.BamlDecompiler/Baml/KnownThings.g.cs | 1321 ++++++++++ ILSpy.BamlDecompiler/Baml/KnownThings.gen.cs | 278 ++ ILSpy.BamlDecompiler/Baml/KnownTypes.cs | 788 ++++++ ILSpy.BamlDecompiler/Baml/test.cs | 2325 +++++++++++++++++ ILSpy.BamlDecompiler/BamlConnectionId.cs | 39 + ILSpy.BamlDecompiler/BamlElement.cs | 60 + ILSpy.BamlDecompiler/BamlResourceEntryNode.cs | 185 +- ILSpy.BamlDecompiler/CecilType.cs | 65 - ILSpy.BamlDecompiler/CecilTypeResolver.cs | 78 - .../Blocks/ConstructorParametersHandler.cs | 39 + .../Handlers/Blocks/DocumentHandler.cs | 38 + .../Handlers/Blocks/ElementHandler.cs | 56 + .../Handlers/Blocks/KeyElementStartHandler.cs | 49 + .../Handlers/Blocks/PropertyArrayHandler.cs | 47 + .../Handlers/Blocks/PropertyComplexHandler.cs | 47 + .../Blocks/PropertyDictionaryHandler.cs | 47 + .../Handlers/Blocks/PropertyListHandler.cs | 47 + .../Handlers/Records/AssemblyInfoHandler.cs | 31 + .../Handlers/Records/AttributeInfoHandler.cs | 31 + .../Handlers/Records/ConnectionIdHandler.cs | 37 + .../ConstructorParameterTypeHandler.cs | 48 + .../Records/ContentPropertyHandler.cs | 36 + .../Handlers/Records/DefAttributeHandler.cs | 39 + .../Records/DefAttributeKeyStringHandler.cs | 49 + .../Records/DefAttributeKeyTypeHandler.cs | 56 + .../Records/DeferableContentStartHandler.cs | 38 + .../Records/LineNumberAndPositionHandler.cs | 31 + .../Handlers/Records/LinePositionHandler.cs | 31 + .../Handlers/Records/LiteralContentHandler.cs | 42 + .../Records/OptimizedStaticResourceHandler.cs | 106 + .../Handlers/Records/PIMappingHandler.cs | 31 + .../PresentationOptionsAttributeHandler.cs | 40 + .../Handlers/Records/PropertyCustomHandler.cs | 160 ++ .../Handlers/Records/PropertyHandler.cs | 49 + .../Records/PropertyTypeReferenceHandler.cs | 56 + .../Records/PropertyWithConverterHandler.cs | 29 + .../Records/PropertyWithExtensionHandler.cs | 101 + .../PropertyWithStaticResourceIdHandler.cs | 65 + .../Handlers/Records/TextHandler.cs | 49 + .../Records/TextWithConverterHandler.cs | 29 + .../Handlers/Records/TypeInfoHandler.cs | 37 + .../Handlers/Records/XmlnsPropertyHandler.cs | 71 + ILSpy.BamlDecompiler/IHandlers.cs | 91 + .../ILSpy.BamlDecompiler.csproj | 90 +- ILSpy.BamlDecompiler/IRewritePass.cs | 29 + .../Rewrite/AttributeRewritePass.cs | 79 + .../ConnectionIdRewritePass.cs} | 127 +- .../Rewrite/DocumentRewritePass.cs | 44 + .../Rewrite/MarkupExtensionRewritePass.cs | 180 ++ .../Rewrite/XClassRewritePass.cs | 62 + .../BAML format.txt | 22 - .../BamlBinaryReader.cs | 40 - .../BamlRecordType.cs | 68 - .../IDependencyPropertyDescriptor.cs | 20 - .../IType.cs | 39 - .../ITypeResolver.cs | 14 - .../KeyMapping.cs | 46 - .../KnownInfo.cs | 1345 ---------- .../NodesCollection.cs | 57 - .../PropertyDeclaration.cs | 55 - .../ResourceName.cs | 29 - .../TypeDeclaration.cs | 167 -- .../XmlBamlElement.cs | 58 - .../XmlBamlNode.cs | 19 - .../XmlBamlProperty.cs | 59 - .../XmlBamlPropertyElement.cs | 45 - .../XmlBamlReader.cs | 1738 ------------ .../XmlBamlSimpleProperty.cs | 38 - .../XmlBamlText.cs | 30 - .../XmlNamespace.cs | 41 - .../XmlToClrNamespaceMapping.cs | 31 - .../SRMDependencyPropertyDescriptor.cs | 33 - ILSpy.BamlDecompiler/Xaml/NamespaceMap.cs | 46 + ILSpy.BamlDecompiler/Xaml/XamlExtension.cs | 83 + .../Xaml/XamlPathDeserializer.cs | 187 ++ ILSpy.BamlDecompiler/Xaml/XamlProperty.cs | 95 + ILSpy.BamlDecompiler/Xaml/XamlResourceKey.cs | 98 + ILSpy.BamlDecompiler/Xaml/XamlType.cs | 102 + ILSpy.BamlDecompiler/Xaml/XamlUtils.cs | 77 + ILSpy.BamlDecompiler/XamlContext.cs | 203 ++ ILSpy.BamlDecompiler/XamlDecompiler.cs | 65 + ILSpy.BamlDecompiler/XmlnsDictionary.cs | 123 + 104 files changed, 10357 insertions(+), 4392 deletions(-) create mode 100644 ILSpy.BamlDecompiler/Baml/BamlContext.cs create mode 100644 ILSpy.BamlDecompiler/Baml/BamlDocument.cs create mode 100644 ILSpy.BamlDecompiler/Baml/BamlNode.cs create mode 100644 ILSpy.BamlDecompiler/Baml/BamlReader.cs create mode 100644 ILSpy.BamlDecompiler/Baml/BamlRecords.cs create mode 100644 ILSpy.BamlDecompiler/Baml/BamlWriter.cs create mode 100644 ILSpy.BamlDecompiler/Baml/KnownMembers.cs create mode 100644 ILSpy.BamlDecompiler/Baml/KnownThings.cs create mode 100644 ILSpy.BamlDecompiler/Baml/KnownThings.g.cs create mode 100644 ILSpy.BamlDecompiler/Baml/KnownThings.gen.cs create mode 100644 ILSpy.BamlDecompiler/Baml/KnownTypes.cs create mode 100644 ILSpy.BamlDecompiler/Baml/test.cs create mode 100644 ILSpy.BamlDecompiler/BamlConnectionId.cs create mode 100644 ILSpy.BamlDecompiler/BamlElement.cs delete mode 100644 ILSpy.BamlDecompiler/CecilType.cs delete mode 100644 ILSpy.BamlDecompiler/CecilTypeResolver.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Blocks/ConstructorParametersHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Blocks/DocumentHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Blocks/ElementHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Blocks/KeyElementStartHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Blocks/PropertyArrayHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Blocks/PropertyComplexHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Blocks/PropertyDictionaryHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Blocks/PropertyListHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/AssemblyInfoHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/AttributeInfoHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/ConnectionIdHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/ConstructorParameterTypeHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/ContentPropertyHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/DefAttributeHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/DefAttributeKeyStringHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/DefAttributeKeyTypeHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/DeferableContentStartHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/LineNumberAndPositionHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/LinePositionHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/LiteralContentHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/OptimizedStaticResourceHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/PIMappingHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/PresentationOptionsAttributeHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/PropertyCustomHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/PropertyHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/PropertyTypeReferenceHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/PropertyWithConverterHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/PropertyWithExtensionHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/PropertyWithStaticResourceIdHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/TextHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/TextWithConverterHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/TypeInfoHandler.cs create mode 100644 ILSpy.BamlDecompiler/Handlers/Records/XmlnsPropertyHandler.cs create mode 100644 ILSpy.BamlDecompiler/IHandlers.cs create mode 100644 ILSpy.BamlDecompiler/IRewritePass.cs create mode 100644 ILSpy.BamlDecompiler/Rewrite/AttributeRewritePass.cs rename ILSpy.BamlDecompiler/{ConnectMethodDecompiler.cs => Rewrite/ConnectionIdRewritePass.cs} (58%) create mode 100644 ILSpy.BamlDecompiler/Rewrite/DocumentRewritePass.cs create mode 100644 ILSpy.BamlDecompiler/Rewrite/MarkupExtensionRewritePass.cs create mode 100644 ILSpy.BamlDecompiler/Rewrite/XClassRewritePass.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/BAML format.txt delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/BamlBinaryReader.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/BamlRecordType.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/IDependencyPropertyDescriptor.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/IType.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/ITypeResolver.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/KeyMapping.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/KnownInfo.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/NodesCollection.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/PropertyDeclaration.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/ResourceName.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/TypeDeclaration.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/XmlBamlElement.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/XmlBamlNode.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/XmlBamlProperty.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/XmlBamlPropertyElement.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/XmlBamlReader.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/XmlBamlSimpleProperty.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/XmlBamlText.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/XmlNamespace.cs delete mode 100644 ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/XmlToClrNamespaceMapping.cs delete mode 100644 ILSpy.BamlDecompiler/SRMDependencyPropertyDescriptor.cs create mode 100644 ILSpy.BamlDecompiler/Xaml/NamespaceMap.cs create mode 100644 ILSpy.BamlDecompiler/Xaml/XamlExtension.cs create mode 100644 ILSpy.BamlDecompiler/Xaml/XamlPathDeserializer.cs create mode 100644 ILSpy.BamlDecompiler/Xaml/XamlProperty.cs create mode 100644 ILSpy.BamlDecompiler/Xaml/XamlResourceKey.cs create mode 100644 ILSpy.BamlDecompiler/Xaml/XamlType.cs create mode 100644 ILSpy.BamlDecompiler/Xaml/XamlUtils.cs create mode 100644 ILSpy.BamlDecompiler/XamlContext.cs create mode 100644 ILSpy.BamlDecompiler/XamlDecompiler.cs create mode 100644 ILSpy.BamlDecompiler/XmlnsDictionary.cs diff --git a/ICSharpCode.Decompiler/Metadata/AssemblyReferences.cs b/ICSharpCode.Decompiler/Metadata/AssemblyReferences.cs index 70631c246..2fd984596 100644 --- a/ICSharpCode.Decompiler/Metadata/AssemblyReferences.cs +++ b/ICSharpCode.Decompiler/Metadata/AssemblyReferences.cs @@ -156,6 +156,11 @@ namespace ICSharpCode.Decompiler.Metadata return name; } + + public override string ToString() + { + return FullName; + } } public class AssemblyReference : IAssemblyReference diff --git a/ILSpy.BamlDecompiler.Tests/Cases/AttachedEvent.xaml b/ILSpy.BamlDecompiler.Tests/Cases/AttachedEvent.xaml index 866abc9b6..4f45dfe48 100644 --- a/ILSpy.BamlDecompiler.Tests/Cases/AttachedEvent.xaml +++ b/ILSpy.BamlDecompiler.Tests/Cases/AttachedEvent.xaml @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/ILSpy.BamlDecompiler.Tests/Cases/AvalonDockBrushes.xaml b/ILSpy.BamlDecompiler.Tests/Cases/AvalonDockBrushes.xaml index cc7e517c9..b934fe7ca 100644 --- a/ILSpy.BamlDecompiler.Tests/Cases/AvalonDockBrushes.xaml +++ b/ILSpy.BamlDecompiler.Tests/Cases/AvalonDockBrushes.xaml @@ -1,23 +1,23 @@  - + - + - + - + - + - + - + @@ -29,25 +29,25 @@ - - + + - + - - - - - - + + + + + + - - + + - + \ No newline at end of file diff --git a/ILSpy.BamlDecompiler.Tests/Cases/AvalonDockCommon.xaml b/ILSpy.BamlDecompiler.Tests/Cases/AvalonDockCommon.xaml index bc3511614..bcb18aed2 100644 --- a/ILSpy.BamlDecompiler.Tests/Cases/AvalonDockCommon.xaml +++ b/ILSpy.BamlDecompiler.Tests/Cases/AvalonDockCommon.xaml @@ -2,7 +2,7 @@ - + @@ -10,24 +10,24 @@ - +