Ejemplo n.º 1
0
        IEnumerable <ProjectFile> CreateXamlResourceFiles(ModuleDef module, ResourceNameCreator resourceNameCreator, ResourceElementSet set)
        {
            bool decompileBaml = options.DecompileXaml && options.DecompileBaml != null;

            foreach (var e in set.ResourceElements)
            {
                Debug.Assert(e.ResourceData.Code == ResourceTypeCode.ByteArray || e.ResourceData.Code == ResourceTypeCode.Stream);
                var data = (byte[])((BuiltInResourceData)e.ResourceData).Data;

                if (decompileBaml && e.Name.EndsWith(".baml", StringComparison.OrdinalIgnoreCase))
                {
                    string typeFullName;
                    var    filename = resourceNameCreator.GetBamlResourceName(e.Name, out typeFullName);
                    yield return(new BamlResourceProjectFile(filename, data, typeFullName, (bamlData, stream) => options.DecompileBaml(module, bamlData, options.DecompilationContext.CancellationToken, stream)));
                }
                else if (StringComparer.InvariantCultureIgnoreCase.Equals(splashScreenImageName, e.Name))
                {
                    var filename = resourceNameCreator.GetXamlResourceFilename(e.Name);
                    yield return(new SplashScreenProjectFile(filename, data, e.Name));
                }
                else
                {
                    var filename = resourceNameCreator.GetXamlResourceFilename(e.Name);
                    yield return(new ResourceProjectFile(filename, data, e.Name));
                }
            }
        }