Exemple #1
0
        private static void ExtractResource(IEmbeddedResource res, string outputPath)
        {
            var currentAssembly = typeof(ResourceExtractor).Assembly;
            var arrResources    = currentAssembly.GetManifestResourceNames();
            var destinationPath = res.RelativePath.Equals("") ? outputPath : Path.Combine(outputPath, res.RelativePath);

            destinationPath.Create();

            var destinationFullPath = res.RelativePath.Equals("") ? Path.Combine(outputPath, res.FileName) : Path.Combine(outputPath, res.RelativePath, res.FileName);

            if (File.Exists(destinationFullPath) && !res.AlwaysReplaceExisting)
            {
                return;
            }

            foreach (
                var resourceName in
                arrResources.Where(resourceName => resourceName.ToUpper().Contains(res.SearchQuery.ToUpper())))
            {
                using (var resourceToSave = currentAssembly.GetManifestResourceStream(resourceName))
                {
                    using (var output = File.Create(destinationFullPath))
                    {
                        resourceToSave?.CopyTo(output);
                    }
                    resourceToSave?.Close();
                }
            }
        }
        public static void CopyPhysicalAssets(IEmbeddedResource embeddedResource)
        {
            var list = GetListOfEmbeddedResources(embeddedResource, ResourceType.All);
            var assembly = Assembly.GetExecutingAssembly();

            if (list?.Count > 0)
            {
                //Copy physical files to destination
                assembly.ExtractEmbeddedResource(list);
            }
        }
        private static List<EmbeddedResource> GetListOfEmbeddedResources(IEmbeddedResource embeddedResource, ResourceType resourceType)
        {
            List<EmbeddedResource> list = new List<EmbeddedResource>();

            foreach (var resource in embeddedResource.Resources)
            {
                if (resource.ResourceType == resourceType || resourceType == ResourceType.All)
                    list.Add(resource);
            }
            return list;
        }
Exemple #4
0
        private int WriteOtherResource(IResource resource)
        {
            byte[] buffer = null;

            IEmbeddedResource embeddedResource = resource as IEmbeddedResource;

            if (embeddedResource != null)
            {
                buffer = embeddedResource.Value;
            }

            IFileResource fileResource = resource as IFileResource;

            if (fileResource != null)
            {
                string location = Path.Combine(Path.GetDirectoryName(fileResource.Module.Location), fileResource.Location);
                location = Environment.ExpandEnvironmentVariables(location);
                if (File.Exists(location))
                {
                    using (Stream stream = new FileStream(location, FileMode.Open, FileAccess.Read))
                    {
                        if (fileResource.Offset == 0)
                        {
                            buffer = new byte[stream.Length];
                            stream.Read(buffer, 0, buffer.Length);
                        }
                        else
                        {
                            BinaryReader reader = new BinaryReader(stream);
                            int          size   = reader.ReadInt32();
                            buffer = new byte[size];
                            stream.Read(buffer, 0, size);
                        }
                    }
                }
            }

            if (buffer != null)
            {
                string fileName = Path.Combine(_outputDirectory, GetResourceFileName(resource));
                using (Stream stream = File.Create(fileName))
                {
                    stream.Write(buffer, 0, buffer.Length);
                }
                WriteLine(fileName);
            }

            return(0);
        }
Exemple #5
0
        private int WriteResource(IResource resource)
        {
            IEmbeddedResource embeddedResource = resource as IEmbeddedResource;

            if (embeddedResource != null)
            {
                try
                {
                    byte[] buffer   = embeddedResource.Value;
                    string fileName = Path.Combine(_outputDirectory, resource.Name);

                    if (resource.Name.EndsWith(".resources"))
                    {
                        fileName = Path.ChangeExtension(fileName, ".resx");
                        using (MemoryStream ms = new MemoryStream(embeddedResource.Value))
                        {
                            ResXResourceWriter    resxw  = new ResXResourceWriter(fileName);
                            IResourceReader       reader = new ResourceReader(ms);
                            IDictionaryEnumerator en     = reader.GetEnumerator();
                            while (en.MoveNext())
                            {
                                resxw.AddResource(en.Key.ToString(), en.Value);
                            }
                            reader.Close();
                            resxw.Close();
                        }
                    }
                    else                     // other embedded resource
                    {
                        if (buffer != null)
                        {
                            using (Stream stream = File.Create(fileName))
                            {
                                stream.Write(buffer, 0, buffer.Length);
                            }
                        }
                    }
                    AddToProjectFiles(fileName);
                    return(0);
                }
                catch (Exception ex)
                {
                    WriteLine("Error in " + resource.Name + " : " + ex.Message);
                }
            }

            return(WriteOtherResource(resource));
        }
Exemple #6
0
        private static void ExtractResource(IEmbeddedResource res, string outputPath)
        {
            var currentAssembly = typeof(ResourceExtractor).Assembly;
            var arrResources    = currentAssembly.GetManifestResourceNames();
            var destinationPath = res.RelativePath.Equals("") ? outputPath : Path.Combine(outputPath, res.RelativePath);

            destinationPath.Create();

            foreach (
                var resourceName in
                arrResources.Where(resourceName => resourceName.ToUpper().Contains(res.SearchQuery.ToUpper())))
            {
                var resInfo       = currentAssembly.GetManifestResourceInfo(resourceName);
                var resSplit      = resourceName.Split('.');
                var extraFileName = string.Join(".", resSplit.Skip(Math.Max(0, resSplit.Length - 2)));
                if (resInfo != null)
                {
                    var fileName            = res.FileName.Equals("") ? resInfo.FileName ?? extraFileName : res.FileName;
                    var destinationFullPath = res.RelativePath.Equals("")
                        ? Path.Combine(outputPath, fileName)
                        : Path.Combine(outputPath, res.RelativePath, fileName);

                    if (File.Exists(destinationFullPath) && !res.AlwaysReplaceExisting)
                    {
                        return;
                    }

                    using (var resourceToSave = currentAssembly.GetManifestResourceStream(resourceName))
                    {
                        using (var output = File.Create(destinationFullPath))
                        {
                            resourceToSave?.CopyTo(output);
                        }
                        resourceToSave?.Close();
                    }
                }
            }
        }
Exemple #7
0
        private int WriteResource(IResource resource)
        {
            IEmbeddedResource embeddedResource = resource as IEmbeddedResource;

            if (embeddedResource != null)
            {
                try
                {
                    byte[] buffer   = embeddedResource.Value;
                    string fileName = Path.Combine(_outputDirectory, GetResourceFileName(resource));

                    if (resource.Name.EndsWith(".resources"))
                    {
                        fileName = Path.ChangeExtension(fileName, ".resx");
                        using (MemoryStream ms = new MemoryStream(embeddedResource.Value))
                        {
                            ResXResourceWriter    resxw  = new ResXResourceWriter(fileName);
                            IResourceReader       reader = new ResourceReader(ms);
                            IDictionaryEnumerator en     = reader.GetEnumerator();
                            while (en.MoveNext())
                            {
                                bool handled = false;

                                if (en.Value != null)
                                {
                                    Type type = en.Value.GetType();
                                    if (type.FullName.EndsWith("Stream"))
                                    {
                                        Stream s = en.Value as Stream;
                                        if (s != null)
                                        {
                                            byte[] bytes = new byte[s.Length];
                                            if (s.CanSeek)
                                            {
                                                s.Seek(0, SeekOrigin.Begin);
                                            }
                                            s.Read(bytes, 0, bytes.Length);
                                            resxw.AddResource(en.Key.ToString(), new MemoryStream(bytes));
                                            handled = true;
                                        }
                                    }
                                }
                                if (handled)
                                {
                                    continue;
                                }

                                resxw.AddResource(en.Key.ToString(), en.Value);
                            }
                            reader.Close();
                            resxw.Close();
                        }
                    }
                    else                     // other embedded resource
                    {
                        if (buffer != null)
                        {
                            using (Stream stream = File.Create(fileName))
                            {
                                stream.Write(buffer, 0, buffer.Length);
                            }
                        }
                    }
                    AddToProjectFiles(fileName);
                    return(0);
                }
                catch (Exception ex)
                {
                    WriteLine("Error in " + resource.Name + " : " + ex.Message);
                }
            }

            return(WriteOtherResource(resource));
        }
 public virtual void VisitEmbeddedResource(IEmbeddedResource value)
 {
 }
Exemple #9
0
 protected internal virtual void ValidateEmbeddedResource(string assemblyFullName, string cultureName, string name, IEmbeddedResource embeddedResource)
 {
     Assert.IsNotNull(embeddedResource);
     Assert.AreEqual(assemblyFullName, embeddedResource.Assembly.FullName);
     Assert.AreEqual(cultureName, embeddedResource.Assembly.Culture.Name);
     Assert.AreEqual(name, embeddedResource.Name);
 }
Exemple #10
0
 public EmailOps(IConfigManager config, IEmbeddedResource resource)
 {
     _config   = config;
     _resource = resource;
 }
 internal static EmbeddedResource FindMatchingResource(AssemblyDefinition adef, IEmbeddedResource eres)
 {
     return((from resource in adef.MainModule.Resources
             where resource is EmbeddedResource && resource.Name.Equals(eres.Name)
             select resource as EmbeddedResource).FirstOrDefault());
 }
 public virtual void VisitEmbeddedResource(IEmbeddedResource value)
 {
 }
 public virtual IResource TransformEmbeddedResource(IEmbeddedResource value)
 {
     return value;
 }