2013-02-28 48 views
24

獲得大會版本我們有一個AssemblyInfo.cs文件在我們的Web應用程序,但我們確實有相同的解決方案等項目。他們大多是類庫。我被告知在我們的UI上顯示來自AssemblyInfo.cs的Assembly版本。我發現在SO下述溶液從C# AssemblyFileVersion usage within a program從AssemblyInfo.cs中

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

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()); 

但這混淆了我點點。它說GetExecutingAssembly()以及如果它在其他類庫的另一個程序集上運行,該怎麼辦?這些代碼是否總是從位於Web Project的AssemblyInfo.cs文件中獲取? (這是我想要什麼)

+0

http://stackoverflow.com/questions/2724546/how-to-get-assembly-version-not-file-version-for-another-exe這個問題舉行會談關於任何程序集的getying版本。 – 2013-02-28 02:01:30

+0

謝謝你,但我不需要任何程序集,而是我想從'AssemblyInfo.cs'中找到,我想確保它來自那裏。 – Tarik 2013-02-28 02:02:27

回答

22

隨着文檔狀態,Assembly.GetExecutingAssembly()獲取調用代碼的編制內的組裝。

如果你想更明確(更快),你可以寫typeof(SomeType).Assembly,其中SomeType是你正在尋找的項目中的任何類型。

+1

那麼你能告訴我如何從Web應用程序的'AssemblyInfo.cs'中始終獲取Assembly版本信息嗎?我只是想確保我需要的領域來自那裏。 – Tarik 2013-02-28 02:01:37

+1

@Tarik:使用該項目中的任何類型。 – SLaks 2013-02-28 02:02:17

+0

這樣的回答使我對以下(VB)代碼:'新ApplicationServices.AssemblyInfo(Reflection.Assembly.GetExecutingAssembly())' – CrazyIvan1974 2017-05-22 14:19:32

-1

如果你想讀取文件,那麼你可以做到這一點。

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); 
      } 

     } 

輸出

1.0.0.0 
+0

親愛的上帝不,謝謝 – Jonesopolis 2018-02-28 17:26:30

相關問題