No AssemblyInfo
existem duas versões de montagem:
AssemblyVersion
: Especifique a versão da montagem que está sendo atribuída.AssemblyFileVersion
: Instrui um compilador a usar um número de versão específico para o recurso de versão do arquivo Win32. A versão do arquivo Win32 não precisa ser igual ao número da versão do assembly.
Eu posso obter Assembly Version
o seguinte com a seguinte linha de código:
Version version = Assembly.GetEntryAssembly().GetName().Version;
Mas como posso obter o Assembly File Version
?
c#
.net
assemblies
version
Enyra
fonte
fonte
Respostas:
Veja meu comentário acima, pedindo esclarecimentos sobre o que você realmente deseja. Espero que seja isso:
fonte
FileVersionInfo
apenasstring
propriedades e nenhumaVersion
propriedade?Assembly.GetEntryAssembly()
retorna NULL, por exemplo, no contexto de suplementos do Office e também em muitos outros casos. Além disso, se você pensa em suplementos / plugins - EntryAssembly é o aplicativo host e, na maioria das vezes, deseja a versão do YourCode (TM) :) Além disso, vale a pena adicionar a esta resposta que éassembly.Location
usada na resposta também pode ser nula. (ou seja, o primeiro caso aleatório pesquisado no Google: github.com/Azure/azure-functions-host/issues/1233 ) e isso provavelmente acontece com mais frequência do que ter montagem de entrada nula.Existem três versões : montagem , arquivo e produto . Eles são usados por recursos diferentes e assumem valores padrão diferentes se você não os especificar explicitamente.
fonte
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;
[assembly: AssemblyVersion("2.0.*")]
para fileVersion use ===[assembly: AssemblyFileVersion("2.0.*")]
e para productVersion use ===[assembly: AssemblyInformationalVersion("2.0.*")]
O último pode ter o sufixo da string paraSemVer
compatibilidade:[assembly: AssemblyInformationalVersion("2.0.0-alpha")]
AssemblyFileVersion
não pode usar a*
notação de sufixo. :( Ele precisa de todos os quatro números.[assembly: AssemblyFileVersion("2.0.0.1")]
Quando quiser acessar a versão do arquivo do aplicativo (o que é definido em Informações da montagem -> Versão do arquivo), diga para definir o texto de uma etiqueta no carregamento do formulário para exibir a versão, acabei de usar
fonte
ATUALIZAÇÃO: Como mencionado por Richard Grimes no meu post citado , @Iain e @Dmitry Lobanov, minha resposta está certa na teoria, mas errada na prática.
Como eu deveria ter me lembrado de inúmeros livros etc., enquanto um define essas propriedades usando o
[assembly: XXXAttribute]
, elas são atacadas pelo compilador e colocadas noVERSIONINFO
recurso.Pelo motivo acima, você precisa usar a abordagem na resposta de @ Xiaofu, pois os atributos são removidos após a extração do sinal.
(Em http://bytes.com/groups/net/420417-assemblyversionattribute - conforme observado lá, se você estiver procurando por um atributo diferente, substitua-o pelo descrito acima)
fonte
AssemblyName.Version
apenas pela propriedade Mas com cada outro atributo que é o caminho certo para fazê-loAssemblyInformationalVersionAttribute
vez deAssemblyVersionAttribute
.net core 3.1Usa isto:
Ou isto:
fonte