Ich habe eine Konsolen-App und ich habe einen Verweis auf 2 Projekte zu dieser Konsolen-App, CustomerService.DataAccess und CustomerService.Business hinzugefügt, wenn die Konsolen-App nun ausgeführt wird Nimm alle Namespaces, die in den 2 Projekten sind, die ich der Konsolen-App hinzugefügt habe. Danke.Erhalte alle Namespaces von Projekten, auf die in einer Konsolen-App verwiesen wird
0
A
Antwort
0
Dazu müssen Sie zuerst die referenzierten Assemblys abrufen und dann die Gruppe der Namespaces von allen Typen in dieser Assembly abrufen.
AssemblyName[] referencedAssemblies = GetType().Assembly.GetReferencedAssemblies();
HashSet<string > namespaces = new HashSet<string>();
foreach (AssemblyName referencedAssembly in referencedAssemblies)
{
Assembly reference = Assembly.Load(referencedAssembly);
if (!reference.GlobalAssemblyCache)
{
HashSet<string> refernceNamespaces = new HashSet<string>(
reference.GetTypes().Select(t => t.Namespace).Where(ns => ns != null));
namespaces.UnionWith(refernceNamespaces);
}
}
Der obige Code ruft alle Namespaces in referenzierten Assemblys ab, die nicht im GAC enthalten sind. Wenn Sie nur die Namespaces in Ihren spezifischen Assemblys abrufen möchten, können Sie einfach die Eigenschaft AssemblyName.Name
überprüfen, um sicherzustellen, dass Sie die richtigen Assemblys überprüfen.
Verwandte Themen
- 1. Filtere eine Dateigruppe, auf die mit einer refid verwiesen wird
- 2. Wie wird auf Variablen in einer Zeichenfolge auf LiveCode verwiesen?
- 3. "Indirekt wird auf die Baugruppe verwiesen" Build Error
- 4. Wie auf .NET 4.0-Assembly in .NET 3.5-Projekten verwiesen wird
- 5. Erhalte EF 6 von NuGet zur Installation auf F # -Projekten
- 6. Organisieren von Code in separaten Projekten gegenüber separaten Namespaces
- 7. Webpack: Benötigt (oder kopiert) automatisch alle Bilder, auf die in HTML verwiesen wird?
- 8. Erhalte alle Instanzen von Primärschlüsseln einer Tabelle
- 9. NSTimer "target": Wie wird auf eine Methode einer Klasse verwiesen?
- 10. Die beste Methode zum Speichern von Konstanten, auf die in der Datenbank verwiesen wird?
- 11. Wie wird auf das initiale Commit verwiesen?
- 12. Erhalte alle Tabellennamen in einer Django App
- 13. Wie auf die vorherige Zelle in einer Datenrahmenspalte (verzögerte Zelle) verwiesen wird, in R
- 14. Objektbereich, auf den als Delegierter verwiesen wird
- 15. Lokale Pythonvariable, auf die vor der Zuweisung verwiesen wird
- 16. Namespaces ausblenden, die nur interne Typen in einer Klassenbibliothek enthalten?
- 17. IEnumerable <> wird in einer Baugruppe definiert, die nicht verwiesen wird - neue NuGet -Klassenbibliotheksprojekt
- 18. Der Typ 'X' ist in einer Baugruppe definiert, auf die nicht verwiesen wird. VS2015/aspnetcore/C#
- 19. Fehler CS0012: Der Typ ‚TaskAwaiter <>‘ wird in einer Baugruppe definiert, die nicht verwiesen wird
- 20. Der Typ 'System.Object' ist in einer Assembly definiert, auf die nicht verwiesen wird - Windows Store-Anwendung
- 21. Wie wird auf ein Element in der untergeordneten Komponente verwiesen?
- 22. Verwenden von ndb.KeyProperty, wie auf dasselbe Modell verwiesen wird?
- 23. Wie wird auf die Datei verwiesen, die gerade in Emacs Lisp geladen wird?
- 24. Wie wird auf ein Asset in einem Ordner verwiesen?
- 25. Sortierung von Projekten in einer Lösung
- 26. Wie wird auf unbenannte destrukturierte Parameter in ES6 verwiesen?
- 27. Alle Visualisierungswerkzeuge für HyperTable Namespaces?
- 28. Verwendung des Web-Service in einer Klassenbibliothek, auf die im Website-Projekt derselben Lösung verwiesen wird
- 29. Datensätze abrufen, auf die in keiner anderen Tabelle verwiesen wird, ActiveRecord query
- 30. Wie auf ein anderes Java-Projekt in Eclipse verwiesen wird
Sie müssen die Assemblys nicht neu laden - Sie können die tatsächliche Assembly-Instanz über AppDomain.CurrentDomain.GetAssemblies() abrufen – zebrabox
Meinten Sie Excecutingassembly von GetType() in dieser ersten Codezeile? – user282807
@zebarbox Sie könnten zwar, aber Aufruf 'Assembly.Load' auf einer bereits geladenen Baugruppe lädt keine weitere Kopie davon, es gibt nur die bereits geladene Baugruppe zurück. Da auf die Assembly trotzdem verwiesen wird, entsteht kein zusätzlicher Overhead. – adrianbanks