net - versioning c#




Como posso obter a versão do arquivo de montagem (4)

No AssemblyInfo existem duas versões de montagem:

  1. AssemblyVersion : especifique a versão da montagem que está sendo atribuída.
  2. AssemblyFileVersion : instrui um compilador para usar um número de versão específico para o recurso de versão do arquivo Win32. Não é necessário que a versão do arquivo Win32 seja igual ao número da versão do assembly.

Eu posso obter a Assembly Version com a seguinte linha de código:

Version version = Assembly.GetEntryAssembly().GetName().Version;

Mas como posso obter a Assembly File Version ?


ATUALIZAÇÃO: Como mencionado por Richard Grimes em meu post citado , @Iain e @Dmitry Lobanov, minha resposta está correta na teoria, mas errada na prática.

Como eu deveria ter lembrado de inúmeros livros, etc., enquanto um define essas propriedades usando o [assembly: XXXAttribute] , elas são highjacked pelo compilador e colocadas no recurso VERSIONINFO .

Pelo motivo acima, você precisa usar a abordagem na resposta do @ Xiaofu, pois os atributos são removidos após o sinal ter sido extraído deles.

public static string GetProductVersion()
{
  var attribute = (AssemblyVersionAttribute)Assembly
    .GetExecutingAssembly()
    .GetCustomAttributes( typeof(AssemblyVersionAttribute), true )
    .Single();
   return attribute.InformationalVersion;
}

(De http://bytes.com/groups/net/420417-assemblyversionattribute - conforme mencionado, se você estiver procurando por um atributo diferente, substitua-o pelo acima)


Existem três versões : montagem , arquivo e produto . Eles são usados ​​por diferentes recursos e assumem diferentes valores padrão, se você não especificá-los explicitamente.

string assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); 
string assemblyVersion = Assembly.LoadFile('your assembly file').GetName().Version.ToString(); 
string fileVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion; 
string productVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion;

Usa isto:

((AssemblyFileVersionAttribute)Attribute.GetCustomAttribute(
    Assembly.GetExecutingAssembly(), 
    typeof(AssemblyFileVersionAttribute), false)
).Version;

Ou isto:

new Version(System.Windows.Forms.Application.ProductVersion);

Veja meu comentário acima pedindo esclarecimentos sobre o que você realmente quer. Espero que seja isso:

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
string version = fvi.FileVersion;




version