Come ottenere C #. Assemblaggio netto per nome?

C’è qualcosa come:

AppDomain.CurrentDomain.GetAssemblyByName("TheAssemblyName") 

quindi, anziché eseguire il looping attraverso AppDomain.CurrentDomain.GetAssemblies() , è ansible ottenere direttamente l’assembly specifico.

Hai provato a guardare Assembly.Load (…) ?

Ho risolto con LINQ

 Assembly GetAssemblyByName(string name) { return AppDomain.CurrentDomain.GetAssemblies(). SingleOrDefault(assembly => assembly.GetName().Name == name); } 

Dipende da cosa stai cercando di realizzare.

Se si desidera ottenere l’assembly, è necessario chiamare System.Reflection.Assembly.Load() (come già indicato). Questo perché .NET controlla automaticamente se l’assembly è già stato caricato nell’AppDomain corrente e non lo carica di nuovo se lo è stato.

Se si sta solo cercando di verificare se l’assembly è stato caricato o meno (per qualche motivo di diagnostica, forse), allora è necessario eseguire il loop su tutti gli assembly caricati.

Un altro motivo per cui si desidera eseguire il ciclo è se si conoscono solo alcune informazioni sull’assembly (ad esempio, non si è certi della versione). Cioè, sai abbastanza per “riconoscerlo quando lo vedi”, ma non abbastanza per caricarlo. Questo è uno scenario abbastanza oscuro e improbabile, però.

Per chi ha solo bisogno di accedere ai metadati dell’assembly (versione, ecc.) Controlla Assembly.ReflectionOnlyLoad (name), che è in grado di caricare solo i metadati, eventualmente salvando su memoria e IO.

Dai un’occhiata alla class System.Reflection.Assembly, in particolare il metodo Load: MSDN