2009-04-21 2 views

Antwort

10

Sie müssen sie als Ressourcen in das Projekt einbeziehen und dann später durch Lesen aus der DLL darauf zugreifen.

Für GIF-Dateien können Sie sie einfach auf die Ressourcen fallen kann (im Ausbau-> Eigenschaftendialog) und sie dann Zugriff über

var img = Properties.Resources.GifName; 

für MP3-Dateien, die Sie wahrscheinlich eingebettete Ressourcen nutzen müssen, und dann lies sie als Stream aus. Ziehen Sie das Element dazu in einen Ordner in Ihrem Projekt, der diesen Dateitypen zugeordnet ist. Klicken Sie mit der rechten Maustaste auf die Datei im Explorer und zeigen Sie den Eigenschaftenbereich an, und legen Sie die "Build-Aktion" auf "eingebettete Ressource" fest.

Sie können dann Code so verwenden (ungetestete Übersetzung von vb, sorry), um das Ding wieder als Stream zu bekommen. Es liegt an dir, den Stream in etwas zu verwandeln, mit dem dein Spieler umgehen kann.

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 

Hier sind ein paar Links, die Sie

  • +0

    Es gibt eine vollständigere "ResourceHelper", die ich verwenden, um den Einstieg. Lass es mich wissen, wenn du es möchtest (pass einfach durch einen VB-> C# Übersetzer) –

    4

    sie einbeziehen in einer Ressourcendatei (resx).

    1

    Sie sollten sie nur als Ressourcen zuweisen. Wenn Sie das Eigenschaftenfenster in VS aufrufen, vergewissern Sie sich, dass Ihre Build-Aktion auf "Ressource" und "In Ausgabeverzeichnis kopieren" auf "Nicht kopieren" festgelegt ist. Sie können Ressourcen auch innerhalb der Projekteigenschaften auf der Registerkarte Ressourcen verwalten.

    7

    Fügen Sie sie als eingebettete Ressourcen hinzu und sie werden in die DLL kompiliert.

    Fügen Sie sie zuerst dem Projekt hinzu, indem Sie sie einfach in den Lösungsexplorer ziehen und dann zu ihren Eigenschaften wechseln, um ihre Build-Aktion in eingebettete Ressourcen zu ändern.

    Verwandte Themen