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
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…