public void DefineUnmanagedResource (string resourceFileName) { if (resourceFileName == null) throw new ArgumentNullException ("resourceFileName"); if (resourceFileName.Length == 0) throw new ArgumentException ("resourceFileName"); if (!File.Exists (resourceFileName) || Directory.Exists (resourceFileName)) throw new FileNotFoundException ("File '" + resourceFileName + "' does not exists or is a directory."); if (native_resource != NativeResourceType.None) throw new ArgumentException ("Native resource has already been defined."); // avoid definition of more than one unmanaged resource native_resource = NativeResourceType.Unmanaged; using (FileStream fs = new FileStream (resourceFileName, FileMode.Open, FileAccess.Read)) { Win32ResFileReader reader = new Win32ResFileReader (fs); foreach (Win32EncodedResource res in reader.ReadResources ()) { if (res.Name.IsName || res.Type.IsName) throw new InvalidOperationException ("resource files with named resources or non-default resource types are not supported."); AddUnmanagedResource (res); } } }