2013-02-28 2 views
24

У нас есть файл AssemblyInfo.cs в нашем веб-приложении, но у нас есть другие проекты в том же решении. В основном это библиотеки классов. Мне говорят, чтобы показать версию Ассамблеи с AssemblyInfo.cs в нашем пользовательском интерфейсе. Я нашел следующее решение в 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() и что, если он работает на другой сборке из других библиотек классов? Будут ли эти коды извлекать из файла AssemblyInfo.cs, который постоянно находится в веб-проекте? (это то, что я хочу)

+0

http://stackoverflow.com/questions/2724546/how-to-get-assembly-version-not-file-version-for-another-exe Этот вопрос переговоров о гейминге любой сборки. –

+0

Спасибо, но мне не нужна какая-либо сборка, вместо этого я хочу от Assembly64.cs, и я хочу убедиться, что она идет оттуда. – Tarik

ответ

22

Как указано в документации, Assembly.GetExecutingAssembly() получает сборку, с которой код вызова был скомпилирован внутри.

Если вы хотите быть более явным (и быстрее), вы можете написать typeof(SomeType).Assembly, где SomeType - это любой тип в проекте, который вы ищете.

+1

Тогда вы можете показать мне, как получать информацию о версии сборки из 'AssemblyInfo.cs' веб-приложения все время? Я просто хочу убедиться, что поле, в котором я нуждаюсь, идет оттуда. – Tarik

+1

@Tarik: Используйте любой тип из этого проекта. – SLaks

+0

Этот ответ привел меня к следующему (VB) коду: 'New ApplicationServices.AssemblyInfo (Reflection.Assembly.GetExecutingAssembly())' – CrazyIvan1974

-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

Смежные вопросы