Lấy tên lắp ráp


190

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

Tôi đã thử như sau:

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"
}

Câu trả lời:


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

hoặc là

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

VS hiển thị lỗi về giải quyết sử dụng. Bạn có thể sử dụng hội đồng.GetEntryAssugging (). GetName (). Name;
Butsaty

3
Trên thực tế, nó phải là typeof (bất kỳ) .GetTypeInfo (). Hội
Thaina

6

Tôi sử dụng hội để đặt tiêu đề của biểu mẫu như sau:

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
Hãy vui mừng vì bạn không gọi nó từ trong Office Addin - nơi GetEntryAssugging () sẽ trả về null
PandaWood

3

Bạn có thể thử mã này sử dụng thuộc System.Reflection.AssemblyTitleAttribute.Titletính:

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


2

Bạn có thể sử dụng AssemblyNamelớp để lấy tên lắp ráp, miễn là bạn có tên đầy đủ cho lắp ráp:

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

hoặc là

AssemblyName.GetAssemblyName(e.Source).Name

Tài liệu tham khảo MSDN - Lớp hội đồng tên


2
Tôi gặp lỗi vì tham số của phương thức GetAssuggingName. Tôi nghĩ rằng nó nên có được Assembly.GetExecutingAssembly().Locationthay vì Assembly.GetExecutingAssembly().FullName.
uzay95

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.