Pergunta

Usando o VS2005 e VB.NET.

Eu tenho um projeto que é uma API para um armazenamento de dados que criei.Quando compilado cria api.dll.

Eu tenho um segundo projeto na mesma solução que tem uma referência de projeto para o projeto de API que quando compilado irá criar wrapper.dll.Basicamente, este é um wrapper para o API, que é específico para uma aplicação.Quando eu uso wrapper.dll em que outro aplicativo, eu tenho a cópia wrapper.dll e api.dll a minha nova aplicação.Como posso obter o projeto de wrapper para compilar o api.dll em si, por isso que eu só tenho um dll para mover ao redor?

Foi útil?

Solução

@Jas, é um recurso especial no Visual Studio.O procedimento é descrito no este blog, chamado "Compartilhamento de um Arquivo Chave de Nome Forte Em Projetos".O exemplo é para o compartilhamento de chave de nome forte arquivos, mas funciona para qualquer tipo de arquivo.

Brevemente, você clique com o botão direito do mouse no seu projeto e selecione "Adicionar Item Existente".Navegue até o diretório do arquivo(s) que você deseja vincular e realce o arquivo ou arquivos.Em vez de apenas clicando em "Adicionar" ou "Abrir" (dependendo da sua versão do Visual Studio, clique na pequena seta para baixo no lado direito do botão.Você verá as opções "Abrir" ou "Ficheiro de Ligação" se você estiver usando o Visual Studio 2003 ou "Adicionar" ou "Adicionar Link" com o de 2005 (não tenho certeza sobre 2008).Em qualquer caso, escolher o que envolve a palavra "Link".Em seguida, o projeto será, essencialmente, de referência, o arquivo poderá ser acessado tanto do projeto original da sua era e o projeto "ligados" a ele.

Esta é uma maneira conveniente de criar um assembly que contém todas as funcionalidades da wrapper.dll e api.dll, mas você vai ter que se lembrar de repetir este procedimento a cada vez que você adicionar um novo ficheiro api.dll (mas não wrapper.dll).

Outras dicas

Há uma maneira mais fácil.Basta criar atalhos (chamados de arquivos vinculados no Visual Studio-ese) em seu wrapper.dll projeto que aponte para os ficheiros de origem api.dll.Que irá compilar sua fonte diretamente no wrapper.dll.

Você provavelmente vai ter que usar uma ferramenta, como ILMerge, para mesclar os dois conjuntos.

Eu acho que você poderia compilar api.dll como um recurso em wrapper.dll.Em seguida, manualmente acesso ao Recurso de api.dll e carregá-lo manualmente.Eu tenho carregado manualmente os conjuntos de disco, para o carregamento a partir de um Stream não deve ser diferente.

Gostaria de tentar incluindo a dll no seu projeto como um arquivo, semelhante à inclusão de um texto ou arquivo xml (além de sua referência de projecto para a compilação).Então eu gostaria de definir o build action para "Embedded Resource." Dentro wrapper.dll, gostaria de usar o objeto de Montagem para acesso api.dll assim como qualquer outro recurso incorporado.Você também deseja carregar o assembly usando o Assembly.Carga http://msdn.microsoft.com/en-us/library/system.reflection.assembly.load.aspx

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