J'ai un projet C# avec quelques fichiers gif et mp3Comment cacher les fichiers gif ou mp3 dans mon projet?
comment puis-je combiner ces fichiers dans mon projet?
(Je ne veux pas qu'ils soient visibles pour les utilisateurs)
J'ai un projet C# avec quelques fichiers gif et mp3Comment cacher les fichiers gif ou mp3 dans mon projet?
comment puis-je combiner ces fichiers dans mon projet?
(Je ne veux pas qu'ils soient visibles pour les utilisateurs)
Vous devez les inclure dans le projet en tant que ressources, puis y accéder ultérieurement en lisant à partir de la DLL.
Pour les fichiers GIF, vous pouvez simplement les déposer sur les ressources (dans la Projet-> dialogue de propriétés), puis y accéder via
var img = Properties.Resources.GifName;
Pour les fichiers mp3, vous aurez probablement besoin d'utiliser des ressources intégrées, puis lisez-les comme un flux. Pour ce faire, faites glisser l'élément vers un dossier de votre projet dédié à ces types de fichiers. Cliquez avec le bouton droit sur le fichier dans l'explorateur et affichez le volet des propriétés, puis définissez l'action "build" sur "embedded resource".
Vous pouvez ensuite utiliser du code quelque chose comme ceci (traduction non testée de vb, désolé), pour obtenir la chose en tant que flux. C'est à vous de transformer le flux en quelque chose que votre joueur peut gérer.
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
Voici quelques liens pour vous aider à démarrer
les inclure dans un fichier de ressources (.resx).
Vous devez simplement les affecter en tant que ressources. Si vous affichez le panneau Propriétés dans VS, assurez-vous que votre action de construction est définie sur Ressource et que Copier dans le répertoire de sortie est défini sur Ne pas copier. Vous pouvez également gérer les ressources à partir des propriétés du projet dans l'onglet Ressources.
Ajoutez-les en tant que ressources intégrées et elles seront compilées dans la DLL.
Commencez par les ajouter au projet, en les faisant simplement glisser vers l'explorateur de solution, puis accédez à leurs propriétés pour modifier leur action de construction en ressources intégrées.
Il y a un "ResourceHelper" plus complète que je l'utilise. Faites-moi savoir si vous le souhaitez (passez le simplement par un traducteur VB-> C#) –