2016-11-08 21 views
5

W .NET Framework mogliśmy dostać zespół rozpoczęciem korzystania:Co to jest odpowiednik Assembly.GetEntryAssembly() w .NET Core?

Assembly.GetEntryAssembly(); 

Ale to jest usuwany z .NET Core. Również nie ma AppDomain. Jak uzyskać dostęp do zestawu wpisów w aplikacjach .NET Core i Windows Universal?

(muszę znaleźć wszystkie swoje klucze zasobów osadzonych)

+0

spróbować Assembly.GetExecutingAssembly() –

+0

Że nie istnieje albo. Te statyczne metody są usuwane z klasy Assembly w rdzeniu .NET! – Paymon

Odpowiedz

0

Skończyłem wstrzykiwać zespół wejścia do biblioteki.

W bibliotece:

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

W aplikacji rozruchu (który używa biblioteki):

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

     .... 
    } 
} 
+0

Niestety, to nie działa w bibliotece, która nic nie wie o "Programie". –

+0

Prawda. Ale możesz podać ten sposób wstrzykiwania zespołu i dodać "dokumentację instalacyjną" dla użytkowników biblioteki, aby dodać powyższy kod do własnego programu. Nie idealne, ale wykonalne. – Paymon

6

Assembly.GetEntryAssembly() jest dostępny w .NET 1.5 standardu, ale nie w wersji 1.0 do 1.4. Jeśli tworzysz tylko aplikacje .NET Core i Universal Windows, wersja 1.5 powinna wystarczyć dla twoich potrzeb.

Jeśli dobrze pamiętam, AppDomain jest przeznaczone do pojawienia się w .NET Standard 2.0. To nie jest teraz dostępne.

+0

Dzięki za sugestię. Ale moja biblioteka jest dzielona między Xamarin dla iOS i Androida, które używają Mono. – Paymon

+2

Z tego co wiem, Xamarin iOS i Android również powinny móc korzystać z zestawów * .NET Standard 1.5 *. –

Powiązane problemy