12
votes

Récupération de manière programmée Version d'assemblage d'un service de course à pied

J'aimerais accéder aux informations de la version de montage d'un service I "Control" avec la classe ServiceController. (c.-à-d. J'aimerais afficher "2.3.1.23"), mais je ne trouve aucune information sur la récupération des versions d'assemblage ... est-ce possible du tout?

EDIT : Juste pour clarifier ... Je connais uniquement le nom du service en cours d'exécution sur l'ordinateur local. Je veux accéder au "FileVersionInfo" de ce service (mieux ledit service exe), mais je ne sais pas où se trouve ce service exété.


0 commentaires

3 Réponses :


3
votes

Essayez ceci:

System.Reflection.Assembly.GetAssembly(typeof(ServiceController)).GetName().Version


1 commentaires

Je pense que l'OP ne veut pas voir la version de l'Assemblée .NET qui implémente la classe ServiceController, mais les informations de version pour certains fichiers EXE ...



11
votes

Si je vous comprends correctement, vous voulez obtenir la version de tout service exe. En supposant que vous connaissez le nom et le chemin de l'exécutable du service, vous voudrez peut-être essayer:

FileVersionInfo versionInfo = FileVersionInfo.GetVersionInfo(<path and name of service exe>);


2 commentaires

Oui, vous avez compris correctement, et cela fonctionnerait certes, mais je ne sais pas où se trouve l'EXE de service ... Je connais uniquement le nom qui est transmis au constructeur de la classe ServiceController.


Edité ma réponse pour vous montrer comment obtenir l'exécutable du service.



2
votes
 Assembly runningAssembly = Assembly.GetEntryAssembly();
 if (runningAssembly == null)
 {
    runningAssembly = Assembly.GetExecutingAssembly();
 }
runningAssembly.GetName().Version;
Use this code inside you service.

1 commentaires

Désolé, je pensais que vous vouliez obtenir la version de montage du code à l'intérieur du service de course.