Вам необходимо включить их в проект в качестве ресурсов, а затем получить к ним доступ позже, прочитав из DLL.
Для файлов gif вы можете просто перетащить их на ресурсы (в диалоге проекта-> свойства), а затем получить к ним доступ через
var img = Properties.Resources.GifName;
Для mp3-файлов вам, вероятно, потребуется использовать встроенные ресурсы, а затем считывать их в виде потока. Для этого перетащите элемент в папку в своем проекте, предназначенную для файлов этого типа. Щелкните правой кнопкой мыши файл в проводнике, откройте панель свойств и установите для параметра «действие сборки» значение «встроенный ресурс».
Затем вы можете использовать код, похожий на этот (непроверенный перевод из vb, извините), чтобы вернуть вещь в виде потока. Вам решать превратить поток в то, с чем может справиться ваш игрок.
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
Вот несколько ссылок, с которых можно начать