2016-11-08 3 views
5

In .net Framework können wir den Beginn der Montage mit bekommen:Was entspricht Assembly.GetEntryAssembly() in .NET Core?

Assembly.GetEntryAssembly(); 

Aber die von .NET Kern entfernt wird. Außerdem gibt es keine AppDomain. Wie kann ich auf die Eingabeassembly in .NET Core- und Windows Universal-Anwendungen zugreifen?

(Ich brauche alle seine eingebettete Ressource Schlüssel zu finden)

+0

versuchen Assembly.GetExecutingAssembly() –

+0

, die nicht entweder nicht existiert. Diese statischen Methoden werden aus der Assembly-Klasse im .NET-Core entfernt. – Paymon

Antwort

0

Ich landete schließlich die Eingabe Assembly in die Bibliothek.

In der Bibliothek:

class AssemblyHelper 
{ 
    // This can be called instead of Assembly.GetEntryAssembly() 
    public static Func<Assembly> GetEntryAssembly; 
} 

In der Start-up-Anwendung (die die Bibliothek verwendet):

class Program 
{ 
    public static void Main() 
    { 
     AssemblyHelper.GetEntryAssembly =() => typeof(Program).GetAssembly(); 

     .... 
    } 
} 
+0

Leider funktioniert das nicht in einer Bibliothek, die nichts über 'Programm 'weiß. –

+0

Wahr. Sie können jedoch diese Methode zum Einfügen der Assembly bereitstellen und den Benutzern Ihrer Bibliothek "Setup-Dokumentation" hinzufügen, um den obigen Code zu ihrem eigenen Programm hinzuzufügen. Nicht ideal, aber machbar. – Paymon

6

Assembly.GetEntryAssembly() in .NET Standard-1.5, aber nicht in den Versionen 1.0 bis 1.4 zur Verfügung steht. Wenn Sie nur .NET Core und Universal Windows Anwendungen entwickeln, sollte Version 1.5 für Ihre Anforderungen ausreichen.

Wenn ich mich richtig erinnere, ist AppDomain bestimmt in .NET Standard 2.0 erscheinen. Es ist jetzt nicht verfügbar.

+0

Danke für Ihren Vorschlag. Aber meine Bibliothek wird auch zwischen Xamarin für iOS und Android geteilt, die Mono verwenden. – Paymon

+2

Soweit ich weiß, sollten Xamarin iOS und Android auch * .NET Standard 1.5 * Assemblies verwenden können. –

Verwandte Themen