2013-02-28 7 views
24

Chúng tôi có một tệp AssemblyInfo.cs trong Ứng dụng Web của chúng tôi nhưng chúng tôi có các dự án khác trong cùng một giải pháp. Họ chủ yếu là thư viện lớp. Tôi được yêu cầu hiển thị Phiên bản hội từ AssemblyInfo.cs trên giao diện người dùng của chúng tôi. Tôi đã tìm thấy các giải pháp sau đây trong SO từ C# AssemblyFileVersion usage within a programLấy Phiên bản Lắp ráp từ AssemblyInfo.cs

using System.Reflection; 
Version version = Assembly.GetExecutingAssembly().GetName().Version; 

hoặc

using System.Reflection; 
using System.IO; 

FileVersionInfo fv = System.Diagnostics.FileVersionInfo.GetVersionInfo 
           (Assembly.GetExecutingAssembly().Location); 

Console.WriteLine("AssemblyVersion : {0}", 
     Assembly.GetExecutingAssembly().GetName().Version.ToString()); 

Console.WriteLine ("AssemblyFileVersion : {0}" , 
     fv.FileVersion.ToString()); 

Nhưng điều này confuses me chút. Nó nói GetExecutingAssembly() và điều gì sẽ xảy ra nếu nó đang chạy trên một assembly khác từ các thư viện lớp khác? Các mã đó có lấy được từ tệp AssemblyInfo.cs đang nằm trong Dự án Web không? (đó là những gì tôi muốn)

+0

http://stackoverflow.com/questions/2724546/how-to-get-assembly-version-not-file-version-for-another-exe này câu hỏi đàm phán về phiên bản hấp dẫn của bất kỳ hội đồng nào. –

+0

Cảm ơn vì nhưng tôi không cần bất kỳ hội đồng nào thay vì tôi muốn từ 'AssemblyInfo.cs' và tôi muốn chắc chắn rằng nó đến từ đó. – Tarik

Trả lời

22

Khi trạng thái tài liệu, Assembly.GetExecutingAssembly() nhận được assembly rằng mã gọi được biên dịch bên trong.

Nếu bạn muốn rõ ràng hơn (và nhanh hơn), bạn có thể viết typeof(SomeType).Assembly, trong đó SomeType là bất kỳ loại nào trong dự án bạn đang tìm kiếm.

+1

Sau đó, bạn có thể chỉ cho tôi cách lấy thông tin Phiên bản hội từ 'AssemblyInfo.cs'of ứng dụng Web mọi lúc không? Tôi chỉ muốn đảm bảo rằng lĩnh vực tôi cần là đến từ đó. – Tarik

+1

@Tarik: Sử dụng bất kỳ loại nào từ dự án đó. – SLaks

+0

Câu trả lời này đã dẫn tôi đến đoạn mã sau (VB): 'Ứng dụng mớiServices.AssemblyInfo (Reflection.Assembly.GetExecutingAssembly())' – CrazyIvan1974

-1

nếu bạn muốn đọc tệp thì bạn có thể thực hiện việc này.

string path = @"d:\AssemblyInfo.cs"; 
     if (File.Exists(path)) 
     { 
      // Open the file to read from. 
      string[] readText = File.ReadAllLines(path); 
      var versionInfoLines = readText.Where(t => t.Contains("[assembly: AssemblyVersion")); 
      foreach (string item in versionInfoLines) 
      { 
       string version = item.Substring(item.IndexOf('(') + 2, item.LastIndexOf(')') - item.IndexOf('(') - 3);   
       Console.WriteLine(version); 
      } 

     } 

Output

1.0.0.0 
+0

chúa tể không cảm ơn bạn – Jonesopolis