2010-11-24 27 views
128

Lớp ngoại lệ của C# có thuộc tính nguồn được đặt thành tên của assembly theo mặc định.
Có cách nào khác để nhận chuỗi chính xác này (không phân tích chuỗi khác) không?Lấy tên assembly

Tôi đã thử những điều sau đây:

catch(Exception e) 
{ 
    string str = e.Source;   
    //"EPA" - what I want    
    str = System.Reflection.Assembly.GetExecutingAssembly().FullName; 
    //"EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" 
    str = typeof(Program).FullName; 
    //"EPA.Program" 
    str = typeof(Program).Assembly.FullName; 
    //"EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" 
    str = typeof(Program).Assembly.ToString(); 
    //"EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" 
    str = typeof(Program).AssemblyQualifiedName; 
    //"EPA.Program, EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" 
} 

Trả lời

236
System.Reflection.Assembly.GetExecutingAssembly().GetName().Name 

hoặc

typeof(Program).Assembly.GetName().Name; 
+0

VS hiển thị lỗi khi sử dụng giải pháp. Bạn có thể sử dụng Assembly.GetEntryAssembly(). GetName(). Name; – Butsaty

+2

Thực ra nó phải là typeof (any) .GetTypeInfo(). Assembly – Thaina

6

tôi sử dụng hội để thiết lập tiêu đề của hình thức như vậy:

private String BuildFormTitle() 
{ 
    String AppName = System.Reflection.Assembly.GetEntryAssembly().GetName().Name; 
    String FormTitle = String.Format("{0} {1} ({2})", 
            AppName, 
            Application.ProductName, 
            Application.ProductVersion); 
    return FormTitle; 
} 
1

Bạn có thể sử dụng các lớp học AssemblyName để có được lắp ráp Tên ly, miễn là bạn có tên đầy đủ để lắp ráp các:

AssemblyName.GetAssemblyName(Assembly.GetExecutingAssembly().FullName).Name 

hoặc

AssemblyName.GetAssemblyName(e.Source).Name 

MSDN Reference - AssemblyName Class

+1

Tôi gặp lỗi vì tham số của phương thức GetAssemblyName. Tôi nghĩ rằng nó nên có được 'Assembly.GetExecutingAssembly(). Vị trí' thay vì' Assembly.GetExecutingAssembly(). FullName'. – uzay95

2

Bạn có thể thử mã này trong đó sử dụng các System.Reflection.AssemblyTitleAttribute.Title tài sản:

((AssemblyTitleAttribute)Attribute.GetCustomAttribute(Assembly.GetExecutingAssembly(), typeof(AssemblyTitleAttribute), false)).Title;

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