Preciso acessar a montagem do meu projeto em C # .NET2.0.
Posso ver o GUID na caixa de diálogo 'Informações do assembly' em propriedades do projeto e, no momento, acabei de copiá-lo para um const no código. O GUID nunca mudará, então esta não é uma solução ruim, mas seria bom acessá-lo diretamente. Existe uma maneira de fazer isso?
ctrl+.
é seu amigoSystem.AppDomain.DomainManager.get returned null.
por um aplicativo de console simples. Parece queAssembly.GetEntryAssembly()
é a forma preferida.Outra maneira é usar Marshal.GetTypeLibGuidForAssembly .
De acordo com o msdn:
fonte
Assembly.ReflectionOnlyLoad
e mesmo quando as montagens dependentes não são carregadas.System.Runtime.InteropServices.Marshal.GetTypeLibGuidForAssembly(System.Reflection.Assembly.GetExecutingAssembly()).ToString()
. Parece muito mais simples do que o outro método. Existem desvantagens?Ou tão fácil:
Funciona para mim...
fonte
Você deve ser capaz de ler o atributo Guid da montagem por meio de reflexão. Isso obterá o GUID para a montagem atual
Você também pode substituir o GuidAttribute por outros atributos, se quiser ler coisas como AssemblyTitle, AssemblyVersion etc.
Você também pode carregar outro conjunto (Assembly.LoadFrom e todos) em vez de obter o conjunto atual - se você precisar ler esses atributos de conjuntos externos (por exemplo - ao carregar um plugin)
fonte
Caso alguém esteja procurando por um exemplo funcional pronto para usar, acabei usando isso com base nas respostas anteriores.
Atualizar:
Como isso chamou um pouco de atenção, decidi incluir outra maneira de fazer isso que venho usando. Dessa forma, você pode usá-lo a partir de uma classe estática:
fonte
Para obter o appID, você pode usar a seguinte linha de código:
Para isso, você precisa incluir o
System.Runtime.InteropServices;
fonte
Sem sorte aqui com as outras respostas, mas consegui resolver com este belo forro:
Espero que isto ajude!
fonte