7
votes

Intégrer plusieurs icônes dans WPF EXE

J'ai une assemblée WPF dans laquelle j'aimerais intégrer cinq icônes pour différents types de filets associés à mon application. Comment puis-je intégrer ces icônes dans mon exe?

@smoore @Grof @Chrisci, merci. Malheureusement, ce n'est pas ce que j'ai demandé. Je vois que ma question était assez vague 0_ °. Laissez-moi reformuler la question:


J'ai des icônes, dites application.ico , document.ico , etc., comme des ressources de mon WPF projets. J'accède à ces icônes dans la plupart des cas avec les éléments suivants: xxx

qui fonctionne chaque fois. Je sais que.


Quelle est ma question est de savoir comment puis-je utiliser les mêmes icônes de Windows Explorer pour les associations de fichiers dans le registre. Je veux pouvoir accéder aux icônes avec un chemin comme suit: xxx

Comme dans la manière dont les icônes sont associées à des fichiers filetypes dans hkey_classes_root

afaik, je devrais utiliser un fichier de ressource ( .rc ), compiler et fusionner avec mon exe. Quelque chose le long des lignes de: xxx

est-ce la bonne façon dans WPF? Existe-t-il une alternative, d'autant plus que cette méthode semble conduire à l'effacement de la version de montage de mon assemblyInfo.cs . Je suis toujours prêt à avoir à écrire les informations de version de la ressource dans la ressource au lieu des informations de l'Assemblée.


0 commentaires

5 Réponses :


2
votes

Propriétés du projet -> Ressources -> Ajouter une ressource -> Ajouter une nouvelle icône / Ajouter un fichier existant (selon que vous avez déjà fait l'icône)


0 commentaires

1
votes

En plus d'ajouter les fichiers à vos ressources de votre projet, vous pouvez ajouter les fichiers à votre projet et définir leur action de construction à la ressource.

Vous pouvez ensuite vous reporter aux fichiers de XAML à l'aide de la propriété source. Par exemple, un fichier icon.png dans un répertoire "ressources" serait chargé à l'aide de: p> xxx pré>

et pour charger le fichier à partir du code que vous utiliseriez: p>

new BitmapImage(new Uri(@"pack://application:,,,/Resources/Icon.png"))


0 commentaires

4
votes

J'ai trouvé une solution em>! Ce n'est pas parfait mais ça fait ce que je veux! Comme j'avais utilisé de très longues nuits scandinaves pour trouver la solution, je pense que je dois le partager ici.

Voici ce que j'ai fait: p>

1) a écrit une application de console bête C #. P> xxx pré>

2) a fait un simple csc restauest.cs code> pour tester que mon code a fonctionné. p>

3) ouvert Notepad et écrivit ce qui suit dans un fichier que j'ai doublé app.rc code>. p> xxx pré>

4) a ran rc / v app.rc code>, le Compilateur de ressources . Un nouveau fichier, app.res code> était apparu. P>

5) RERAN CSC code> mais cette fois: p>

csc /win32res:App.res restest.cs


0 commentaires

4
votes
  1. créer app.rc: p>

    rc App.rc
    
  2. compile: p>

    101 ICON "Application.ico"
    102 ICON "Document.ico"
    103 ICON "Help.ico"
    
  3. ajoutez app.Res à votre projet (laissez-le comme votre action de construction). LI>
  4. Construire. Li>

    Tout fait! P> ol>


2 commentaires

Merci, c'est ma réponse exactement.


Eh bien, pas exactement. La mienne utilise un studio visuel ...



3
votes

Je viens de créer un outil simple pour faire exactement cela sans avoir à gaver des fichiers .Res. (Si vous gérez vos propres fichiers .RES, vous n'obtiendrez pas automatiquement une ressource de manifeste et de version). C'est un utilitaire minuscule que vous pouvez utiliser dans le cadre de votre événement Post-Build et vous permet d'ajouter tous les fichiers d'icônes dans un dossier particulier à votre assemblage. Si nous supposons que vous avez un dossier d'icônes dans votre dossier de projet principal, vous pouvez ajouter l'événement post-construction suivant: xxx

une description supplémentaire et un téléchargement peut être trouvé sur http://einaregilsson.com/add-multiples-icons-a-a-dototnet-application /


1 commentaires

Le projet d'inserticons fonctionne parfaitement avec les fichiers exécutables générés .NET. Y a-t-il un plan pour ajouter de la prise en charge de .NET 5?