Je pourrais faire ce ou p> return Path.GetFileNameWithoutExtension(Application.ExecutablePath);
3 Réponses :
Cela dépend de la manière dont vous définissez le «nom de l'application».
< Code> Assembly.Bettentrytambily (). GetName (). Nom code> renvoie le nom simple de l'assemblage. Ceci est généralement, mais pas nécessairement, le nom de fichier du fichier manifeste de l'Assemblée, moins son extension P> donc, le nom getname (). Le nom semble plus affitable. P> Pour le plus rapide, je ne sais pas. Je présume que exécutablePath est plus rapide que GetName () car dans l'obtention () nécessite une réflexion, mais cela doit être mesuré. P> EDIT: P> Essayez de Construire cette application de console, exécutez-le puis essayez de renommer le nom du fichier exécutable à l'aide de l'Explorateur de fichiers Windows, exécuté directement avec le double clic sur l'exécutable renommé. application.executablePath code> renvoie le chemin d'accès du fichier exécutable qui a démarré l'application, y compris le nom exécutable, cela signifie que si une personne renomme le fichier change de valeur. P>
L'exécutablePath reflète la modification, le nom de l'assemblage est toujours le même p>
Savez-vous dans quel scénario ils diffèrent? Nom exécutable (à partir de exécutablePath code>) semble être exactement le nom de l'assembly.
Selon ce que vous envisagez d'être le nom de l'application em>, il y a même une troisième option: Obtenez le titre de montage ou le nom du produit (ceux-ci sont généralement déclarés dans ou: p> AssemblyInfo.cs code>):
Pourquoi titleattributes [0] est l'AssembléeTiTleatTribute code> vérifiant ici? Nous avons déjà interrogé la même chose?
@nawfal: Oui, vous avez raison, il est fortement improbable que les éléments de la matrice soient d'un autre type, mais certains outils d'analyse de code statique (comme Resharper) marqueront ce code comme un potentiel NullReferenceException code > Menace car
obj comme t code> expression évaluera à
null code> si
obj code> n'est pas
t code>. En écrivant
obj is t code> avant
obj comme t code>, ces outils sauront au moment de la compilation qu'aucune exception ne sera lancée.
Oui je comprends ça. Bien que j'ai certainement employé votre code pour obtenir le titre de la demande, je pense que l'application.Productname était la plus courte et la plus facile à la question.
@nawfal: Oui, vous avez fait la bonne chose, application.productname code> est un bon choix pour une application WinForms. Querifier les attributs peut aider si l'application n'est pas des formulaires Windows. Pour être complètement précis, la mise en oeuvre interne de
Application.Productname code> récupère le
AssemblyProDucTatribute code> la valeur et le cache le cache.
Application.Produits et application.Productsersion Code> s'applique à NET CORE 3.1 B>. Et
assembly et messagebox.show code>?
Difficile de deviner ce que vous entendez par "nom de l'application", le contexte compte. Les deux renvoient le nom du fichier EXE i>. Même chose que le nom du processus.
@Hanspassant Oh, je veux dire le nom principal de mon produit. Par exemple, pour MS Word, c'est "Microsoft Word" et non "Winwork". Dans mon cas, ce nom que je n'ai pas codé dans les propriétés de l'application en tant que nom de montage. Quelle serait l'approche de l'obtenir?