2010-01-25 36 views
10

Tôi có giải pháp C#, tham chiếu đến dll tôi đã tạo từ một giải pháp C# khác.Xác định phiên bản tệp dll được tham chiếu trong C#

Thật dễ dàng để xác định phiên bản sản phẩm của giải pháp của tôi với Application.ProductVersion. Tuy nhiên, những gì tôi thực sự cần là một cách để xác định phiên bản tập tin của exe và dll riêng biệt, trong chương trình của tôi. Tôi muốn hiển thị các phiên bản tệp dll và exe trong hộp thoại Giới thiệu của tôi. Mã sẽ trông như thế nào để làm điều này?

Trả lời

18

Cách đơn giản nhất là nếu bạn biết một loại trong các hội đồng tham chiếu:

AssemblyName name = typeof(MyCompany.MyLibrary.SomeType).Assembly.GetName(); 

Assembly.GetName trả về một AssemblyName trong đó có một tài sản cho thấy phiên bản lắp ráp Version.

Ngoài ra, bạn có thể nhận được những cái tên lắp ráp tất cả các assembly được tham chiếu bởi lắp ráp thực hiện (ví dụ, các .exe):

AssemblyName[] names = Assembly.GetExecutingAssembly().GetReferencedAssemblies(); 
+0

cám ơn; Tôi nghĩ rằng phải có một cách đơn giản để làm điều này trong .NET nhưng tôi đã không thể tìm thấy nó. Khi tôi đang tìm kiếm một giải pháp, tôi nghĩ những gì đã ném tôi là GetName() ... Tôi thậm chí không nhìn vào nó, bởi vì tôi cho rằng nó sẽ chỉ trả về một chuỗi hoặc một cái gì đó. –

3

lẽ là giải pháp đơn giản nhất là thế này:

var version = Assembly.GetAssembly(typeof(SomeType)).GetName().Version; 

nơi SomeType là một loại bạn biết chắc chắn được xác định trong hội đồng cụ thể đó. Sau đó, bạn có thể gọi. ToString() trên số version object này hoặc xem các thuộc tính của nó.

Tất nhiên, điều này sẽ nổ tung trong một quả cầu lửa lớn vào thời điểm bạn di chuyển loại của bạn vào một hội đồng khác. Nếu đây là một khả năng, bạn sẽ cần một cách mạnh mẽ hơn để tìm đối tượng lắp ráp. Hãy cho tôi biết nếu đây là trường hợp.

2

Lớp AssemblyInfo có tất cả thông tin này, vì vậy bạn chỉ cần tham khảo bản lắp ráp trong mã của bạn. Ví dụ:

Assembly.GetExecutingAssembly.GetName.Version.ToString() 

Bạn có thể nhận được các hội đồng khác trong dự án theo những cách khác nhau, ví dụ

var assemblies = Assembly.GetExecutingAssembly().GetReferencedAssemblies();

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