Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Hide gif or mp3 files in my project?

Tags:

c#

I have a C# project with some gif and mp3 files

how I can combine those files within my project?

(I don't want them to be visible to users)

like image 375
Gold Avatar asked Nov 29 '22 20:11

Gold


1 Answers

You need to include them in the project as resources, and then access them later by reading from the DLL.

For gif files you can simply drop them on the resources (in the project->properties dialog) and then access them via

var img = Properties.Resources.GifName;

For mp3 files you will probably need to use embedded resources, and then read them out as a stream. To do this, drag the item to a folder in your project dedicated to these types of files. Right click on the file in the explorer and show the properties pane, and set the "build action" to "embedded resource".

You can then use code something like this (untested translation from vb, sorry), to get the thing back out as a stream. It's up to you to transform the stream into something your player can handle.

using System.Linq; // from System.Core.  otherwise just translate linq to for-each
using System.IO;

public Stream GetStream(string fileName) {
    // assume we want a resource from the same that called us
    var ass = Assembly.GetCallingAssembly();
    var fullName = GetResourceName(fileName, ass);
    //  ^^ should = MyCorp.FunnyApplication.Mp3Files.<filename>, or similar
    return ass.GetManifestResourceStream(fullName);
}

// looks up a fully qualified resource name from just the file name.  this is
// so you don't have to worry about any namespace issues/folder depth, etc.
public static string GetResourceName(string fileName, Assembly ass) {
    var names = ass.GetManifestResourceNames().Where(n => n.EndsWith(fileName)).ToArray();
    if (names.Count() > 1) throw new Exception("Multiple matches found.");
    return names[0];
}    

var mp3Stream = GetStream("startup-sound.mp3");

var mp3 = new MyMp3Class(mp3stream);  // some player-related class that uses the stream

Here are a few links to get you started

  • Microsoft Guide
  • Reading Resources from the DLL
like image 150
Andrew Avatar answered Dec 15 '22 04:12

Andrew