Pergunta

Estou trabalhando em um módulo para um CMS.Este módulo é distribuído como uma DLL de biblioteca de classes.

Tenho várias bibliotecas de utilitários que gostaria de usar neste módulo.Existe alguma maneira de vincular essas bibliotecas estaticamente para não ter que distribuir várias DLLs (distribuindo assim minhas bibliotecas de utilitários separadamente)?

Eu gostaria de ter apenas uma DLL.

Foi útil?

Solução

Você pode mesclar suas muitas DLLs com ILMERGE:

http://research.microsoft.com/~mbarnett/ILMerge.aspx

Ainda não tentei.Espero que ajude.


Baixe aqui:
http://www.microsoft.com/downloads/details.aspx?familyid=22914587-B4AD-4EAE-87CF-B14AE6A939B0&displaylang=en

Descrição breve (da página de download)
ILMerge é um utilitário para mesclar vários assemblies .NET em um único assembly .NET.Funciona tanto em executáveis ​​quanto em DLLs e vem com diversas opções para controlar o processamento e o formato da saída.Consulte a documentação anexa para obter detalhes.

Outras dicas

Se você não quiser usar o ILMerge, consulte esta página:

http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx

Nota do editor:Jeffrey Richter aconselha colocar suas DLLs no arquivo exe como recursos (Para cada arquivo DLL adicionado, exiba suas propriedades e altere sua “Ação de construção” para “Recurso incorporado”.).Então, um carregador de classes personalizado é necessário para fazer o executável funcionar (Em tempo de execução, o CLR não será capaz de encontrar os assemblies DLL dependentes, o que é um problema.Para corrigir isso, quando seu aplicativo for inicializado, registre um método de retorno de chamada com o evento ResolveAssembly do AppDomain).

Certifique-se de alterar o resourceName string para apontar para seus recursos reais.(por exemplo.mudar AssemblyLoadingAndReflection ao nome do seu projeto.)

A resposta curta para isso é não!Você não pode vincular uma dll durante a compilação.Não sei se existe alguma maneira sutil de fazer isso, mas provavelmente você teria que distribuir as DLLs junto com seu cms.A melhor maneira de fazer isso é criar algum tipo de redistribuível.

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