2013-02-28 15 views
24

Mamy plik AssemblyInfo.cs w naszej aplikacji internetowej, ale mamy inne projekty w tym samym rozwiązaniu. Są to w większości biblioteki klas. Powiedziano mi, aby wyświetlić wersję montażową od AssemblyInfo.cs w naszym interfejsie użytkownika. Znalazłem następujące rozwiązanie o tyle od C# AssemblyFileVersion usage within a programUzyskiwanie wersji montażowej z AssemblyInfo.cs

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

lub

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

Ale myli mi trochę. Mówi ona: GetExecutingAssembly() i co jeśli działa na innym złożeniu z innych bibliotek klas? Czy kody te będą pobierane z pliku AssemblyInfo.cs, który cały czas znajduje się w Web Project? (właśnie tego chcę)

+0

http://stackoverflow.com/questions/2724546/how-to-get-assembly-version-not-file-version-for-another-exe To pytanie rozmowy o getykowej wersji dowolnego zestawu. –

+0

Dzięki, ale nie potrzebuję żadnych zestawów zamiast tego, które chcę z 'AssemblyInfo.cs' i chcę się upewnić, że pochodzą stąd. – Tarik

Odpowiedz

22

Zgodnie z dokumentacją, Assembly.GetExecutingAssembly() otrzymuje zestaw, w którym kod wywołujący został skompilowany wewnątrz.

Jeśli chcesz być bardziej bezpośredni (i szybszy), możesz napisać typeof(SomeType).Assembly, gdzie SomeType jest dowolnym typem w projekcie, którego szukasz.

+1

Następnie możesz pokazać mi, jak uzyskać informacje o wersji Assembly z "AssemblyInfo.cs" z aplikacji sieciowej przez cały czas? Chcę tylko upewnić się, że pole, którego potrzebuję, pochodzi stąd. – Tarik

+1

@Tarik: Użyj dowolnego typu z tego projektu. – SLaks

+0

Ta odpowiedź doprowadziła mnie do następującego kodu (VB): 'New ApplicationServices.AssemblyInfo (Reflection.Assembly.GetExecutingAssembly())' – CrazyIvan1974

-1

Jeśli chcesz przeczytać plik, możesz to zrobić.

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

     } 

wyjścia

1.0.0.0 
+0

drogi panie, nie, dziękuję – Jonesopolis