J'ai besoin d'accéder à l'assembly de mon projet en C # .NET2.0.
Je peux voir le GUID dans la boîte de dialogue 'Assembly Information' sous les propriétés du projet, et pour le moment, je viens de le copier dans un const dans le code. Le GUID ne changera jamais, donc ce n'est pas une mauvaise solution, mais ce serait bien d'y accéder directement. Y a-t-il un moyen de faire cela?
ctrl+.
est votre amiSystem.AppDomain.DomainManager.get returned null.
pour une application console simple. On dirait queAssembly.GetEntryAssembly()
c'est le moyen préféré.Une autre façon consiste à utiliser Marshal.GetTypeLibGuidForAssembly .
Selon msdn:
la source
Assembly.ReflectionOnlyLoad
et même lorsque les assemblys dépendants ne sont pas chargés.System.Runtime.InteropServices.Marshal.GetTypeLibGuidForAssembly(System.Reflection.Assembly.GetExecutingAssembly()).ToString()
. Cela semble beaucoup plus simple que l'autre méthode. Y a-t-il des inconvénients?Ou, tout aussi simple:
Travaille pour moi...
la source
Vous devriez pouvoir lire l'attribut Guid de l'assembly via la réflexion. Cela obtiendra le GUID de l'assembly actuel
Vous pouvez également remplacer GuidAttribute par d'autres attributs, si vous souhaitez lire des éléments tels que AssemblyTitle, AssemblyVersion, etc.
Vous pouvez également charger un autre assembly (Assembly.LoadFrom et tout) au lieu d'obtenir l'assembly actuel - si vous avez besoin de lire ces attributs d'assemblys externes (par exemple - lors du chargement d'un plugin)
la source
Au cas où quelqu'un d'autre chercherait un exemple de travail prêt à l'emploi, c'est ce que j'ai fini par utiliser en fonction des réponses précédentes.
Mettre à jour:
Comme cela a attiré un peu d'attention, j'ai décidé d'inclure une autre façon de le faire que j'utilise. Cette façon vous permet de l'utiliser à partir d'une classe statique:
la source
Pour obtenir l'appID, vous pouvez utiliser la ligne de code suivante:
Pour cela, vous devez inclure le
System.Runtime.InteropServices;
la source
Pas de chance ici avec les autres réponses, mais j'ai réussi à résoudre le problème avec cette belle doublure:
J'espère que cela t'aides!
la source