2016-11-08 22 views
5

Trong khuôn khổ .net chúng ta có thể có được bắt đầu lắp ráp sử dụng:Tương đương với Assembly.GetEntryAssembly() trong .NET Core là gì?

Assembly.GetEntryAssembly(); 

Nhưng điều đó được lấy ra từ NET Core. Ngoài ra không có AppDomain. Làm thế nào tôi có thể truy cập vào assembly nhập trong các ứng dụng .NET Core và Windows Universal?

(Tôi cần phải tìm tất cả các phím nguồn nhúng nó)

+0

thử Assembly.GetExecutingAssembly() –

+0

Điều đó không tồn tại nữa. Những phương thức tĩnh được loại bỏ khỏi lớp Assembly trong .NET core! – Paymon

Trả lời

0

Tôi đã kết thúc tiêm cụm lắp ráp vào thư viện.

Trong thư viện:

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

Trong ứng dụng khởi động (trong đó sử dụng thư viện):

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

     .... 
    } 
} 
+0

Đáng buồn thay, điều này không làm việc trong một thư viện mà không biết gì về 'Program'. –

+0

Đúng. Nhưng bạn có thể cung cấp cách này để tiêm lắp ráp và thêm "tài liệu thiết lập" cho người dùng thư viện của bạn để thêm mã ở trên vào Chương trình của riêng họ. Không lý tưởng, nhưng doable. – Paymon

6

Assembly.GetEntryAssembly() có sẵn trong NET chuẩn 1,5, nhưng không phải trong phiên bản 1.0 qua 1.4. Nếu bạn chỉ phát triển các ứng dụng .NET Core và Universal Windows, phiên bản 1.5 sẽ đủ cho nhu cầu của bạn.

Nếu tôi nhớ chính xác, AppDomain được mệnh để xuất hiện trong .NET Standard 2.0. Nó không có sẵn ngay bây giờ.

+0

Cảm ơn đề xuất của bạn. Nhưng thư viện của tôi được chia sẻ giữa Xamarin cho iOS và Android cũng sử dụng Mono. – Paymon

+2

Theo như tôi biết, Xamarin iOS và Android cũng sẽ có thể sử dụng * .NET Standard 1.5 * assembly. –

Các vấn đề liên quan