Recipe 13.14. Reading Manifest Resources ProgrammaticallyProblemYou need to obtain information about manifest resources. SolutionUse the GetManifestResourceInfo and GetManifestResourceNames methods of the Assembly class: public static void DisplayManifestResourceInfo(string asmPath) { Assembly asm = Assembly.LoadFrom(asmPath); foreach (string resName in asm.GetManifestResourceNames()) { Console.WriteLine("Resource Name: " + resName); ManifestResourceInfo mri = asm.GetManifestResourceInfo(resName); Console.WriteLine("\rFileName: " + mri.FileName); Console.WriteLine("\rResourceLocation: " + mri.ResourceLocation); if (mri.ReferencedAssembly != null) Console.WriteLine("\rReferencedAssembly: " + mri.ReferencedAssembly.FullName); } } DiscussionTo obtain a ManifestResourceInfo object or objects, you must first call the GetManifestResourceNames method on an Assembly object. This method returns an array of string objects, which contain the resource name. This resource name is then passed in to the GetManifestResourceInfo method to obtain the ManifestResourceInfo object. The ManifestResourceInfo object is what contains all the information about the manifest resource. The ManifestResourceInfo.FileName property returns a fully qualified string describing the file that contains the manifest resource. This property will return an empty string if the resource is embedded in the same assembly on which the GetManifestResourceInfo was called. The ManifestResourceInfo.ResourceLocation property returns all the ResourceLocation flags for this resource. These flags can be one or a combination of three values described in Table 13-4.
The final property of use in the ManifestResourceInfo class is the ReferencedAssembly property. This property returns an Assembly object that contains the resource. This property returns null when the resource is embedded in the assembly on which this property was called. See AlsoSee the "GetManifestResourceInfo Method" and "GetManifestResourceNames Method" topics in the MSDN documentation. |