Pergunta

Atualmente, temos um debate interno aquecido quanto a saber se o nome real assembly .NET deve incluir o número da versão do código (por exemplo CodeName02.exe ou CompanyName.CodeName02.dll). Alguém sabe de uma fonte autorizada, como a Microsoft, que fornece orientação sobre esta questão?

Foi útil?

Solução

Isto é o que as propriedades / arquivo AssemblyInfo.cs é para.

Existem duas versões dentro desse arquivo, a versão do arquivo e a versão de montagem:

[assembly: AssemblyVersion("1.1.0.256"]
[assembly: AssemblyFileVersion("1.1.0.256")]

Uma vez que estes são definidos você pode usá-los para rastrear as versões de vocês binários. Ele é facilmente visualizado no Explorer com certas Click> Propriedades.

Nenhum dos dll ou nomes exe incluída em aplicações da Microsoft (e OS) uso dessa convenção.

Outros sistemas irá usar esses números para resolver dependências e verificar a versão. Por exemplo, o sistema MSI irá atualizar binários com base nas propriedades de versão.

Outras dicas

diretrizes de design Framework por Krzysztof Cwalina e Brad Abrams da Microsoft sugere montagem nomear como

<Company>.<Component>.dll

Eu apoio ainda mais este (NOT usando a versão #) porque o GAC e dll propriedades do arquivo irá mostrar a versão.

Eu não estou ciente de qualquer coisa autoritária, mas parece-me que o uso de um nome consistente simplificaria tudo, desde o processo de scripts de instalação para a documentação. Dado que se pode armazenar a versão como metadados sobre o arquivo, eu não sei por que seria necessário no nome do arquivo. Por configurar-se para o aborrecimento de ter que conta para arquivos de forma diferente com nomes?

basta olhar para o .NET framework ou qualquer outro produto Microsoft para esse assunto. colocando um número de versão como parte dos sons nome do assembly como uma má idéia.

Há um lugar para isso (e outras informações) na seção de meta-dados da montagem. (AssemblyInfo.cs)

Esta informação pode ser vista no Windows Explorer (de diálogo Propriedades, barra de status, dica - todos eles mostram esta informação).

Eu sei DevExpress website indicadores de versão usam como parte de seus nomes de montagem, como XtraEditors8.2.dll. Eu acho que a razão é que você quer ser capaz de ter várias versões do assembly localizado no mesmo diretório. Por exemplo, temos cerca de 15 smartclients que são distribuídos como parte do mesmo shell / cliente. Cada SmartClient pode ter uma versão diferente dos controles DevExpress e, portanto, precisamos ser capazes de ter XtraEditors7.1.dll e XtraEditors8.2 existente no mesmo diretório.

Eu diria que se você tem bibliotecas comuns que são dependências de módulos reutilizáveis ??e podem existir em várias versões 1.0, 1.1, 1.2 etc., então seria um argumento válido que os números de versão pode ser incluído no nome para colisões a evitar . Tendo em conta que as bibliotecas comuns não estão vivendo no GAC.

Acho que a principal idéia de colocar um número de versão no nome do arquivo de uma DLL é trazido da DLL Hell , onde ter várias versões do DLL, todos com os problemas mesmo nome causadas (ou seja, qual a versão real de um DLL que você tem e ele tem as funções necessárias, etc).

O .NET Framework alças dependências completamente diferentes em comparação com os arquivos C / C ++ DLL que são mais tradicionais, é possível ter várias versões de uma biblioteca no GAC, principalmente porque o GAC é uma pasta 'fake' que as ligações para outros arquivos no sistema de arquivos, além de ser capaz de ter as assembleias incluídos com seu executável de instalação (mesmo implantar pasta, etc).

As informações versão pode ser contido no arquivo AssemblyInfo e podem ser consultados através da reflexão etc.

Alguns fornecedores incluem o número da versão no nome para torná-lo mais fácil de ver de relance o que é. Os nomes dll Microsoft não conter um número de versão no diretório quadro.

Desde a versão pode ser definido como uma propriedade não é isso redundante semi?

Eu também ir em um membro e sugerir MS não tem um padrão dado uma rápida olhada em seus nomes DLL:. User32.dll, tcpmon.dll, winsock.dll, etc

A Microsoft usou um sufixo de 32 para denotar 32 versões bit DLL para que aqueles da DLL poderiam coexistir com os arquivos DLL de 16 bits existentes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top