Pergunta

Estou usando o Visual Studio 2008 e gostaria de criar uma espécie de projeto recipiente que contém um número de DLL que deve ser instalado com uma solução. Eu quero que eles sejam em um projeto separado para que eles possam ser facilmente conectado a uma solução como um grupo.

Eu criei um teste chamado projeto vazio, acrescentou minha DLL do para-lo com um Build Action do "Conteúdo" e configurá-los para "Copy Always". Isso tudo funciona exatamente como eu quero. O problema é que se eu definir o projeto de teste Tipo de saída para "Console Application" ou "Windows Application" que não vai construir, porque não há nenhum ponto de entrada. Se eu definir o tipo de saída para "Biblioteca de Classe", constrói, mas eu acabar com um arquivo TEST.DLL extra que eu realmente não quero.

Existe uma maneira de tipo de definir o tipo de saída para "none"? Quero que as ações de construção a ter lugar (por isso os meus DLL são copiados), mas eu não quero que a classe manequim montagem criada. Alguma idéia?

Obrigado!

Foi útil?

Solução

Premissas para o seguinte guia passo-a-passo:

Vamos supor que você tem uma solução com dois projetos:

  • Main:. Seu principal projeto (start-up)
  • BundledDLLs:. Um projeto de biblioteca que contém os .dlls que deve acabar no diretório de saída do projeto principal

Passo-a-passo:

A maneira mais fácil de atingir o seu objetivo dentro do Visual Studio é provavelmente a seguinte:

  1. Adicionar todos .dlls para BundledDLLs e definiu seu Copiar para o diretório de saída e Copiar se mais recente .

    Isso é feito em Project Explorer e Propriedades janelas.

  2. diretório de saída do Configure BundledDLLs ser idêntico ao diretório de saída do Main.

    Isto pode ser feito no Construção guia de BundledDLL do Propriedades do projeto página. Digite algo como o seguinte no Caminho de saída caixa de texto:

    ..\Main\bin\Debug
    
  3. Configurar BundledDLLs como uma dependência do Main.

    NÃO add BundledDLLs como uma referência de projeto para Main, como você geralmente poder; em vez disso, use o Dependências do projeto para. Isto irá dizer a ferramenta de construção que sempre que Main é construído, as necessidades BundledDLLs a ser construído em primeiro lugar.

    fazer isso clicando com o botão direito no nó do projeto Main para abrir o menu de contexto; selecionar Project dependências ... de lá. Na caixa de diálogo agora aberto, selecione primeiro Main do drop-down list; em seguida, verificar BundledDLLs na lista de projetos a seguir. BundledDLLs já está registrado como uma dependência do Main.

    P.S:. Uma desvantagem de não ter uma referência de assembly explícito na Main é que algumas ferramentas podem não reconhecer a dependência. Por exemplo, a implantação do ClickOnce pode não funcionar corretamente.

  4. Adicionar um evento pós-compilação para BundledDLLs que exclui o BundledDLLs.dll supérfluo.

    Como você disse, você não quer, e não precisam, a saída fictício gerado quando BundledDLLs é construído. Então adicione um evento pós-compilação que simplesmente elimina esta .dll uma vez que foi criado.

    Abra o eventos de compilação na Propriedades do projeto página de BundledDLLs e digite algo como o seguinte na caixa de texto pós-compilação:

    DEL "$(TargetDir)\$(TargetName).*"
    

    (No caso de você se perguntou: A razão pela qual você não adicionar este projeto como uma referência de projeto para Main anterior é porque se você tivesse feito isso, Main estaria procurando BundledDLLs.dll, que não seria capaz de encontrar desde que você realmente não quer que tal arquivo a ser gerado.)

    P.S:. Uma desvantagem de adicionar um tal passo pós-compilação é que ele pode interferir com compilações incrementais. Se o projeto continua sendo recompilados a partir do zero, depois disso, você pode ser melhor fora de remover a etapa de pós-construção e vivendo com o BundledDLLs.dll extra no diretório de saída da sua solução.

Outras dicas

Outra opção é usar um projeto makefile, que não exige que você construa / link nada.

Nas propriedades do projeto (propriedade clique direito na Solution Explorer e clique em "Propriedades"), em "Propriedades de configuração" e, em seguida, em "Geral", selecione "Makefile" do "Tipo de configuração" drop-down menu. A saída da construção incluirá o aviso "A propriedade 'NMakeBuildCommandLine' não existe ... Skipping", mas a compilação terá êxito sem construir qualquer dll / exe / etc.

Enquanto outras respostas aqui pode dirigir melhor sua necessidade específica, especificando um makefile mais diretamente responde à pergunta título "possível criar projeto do Visual Studio com saída Tipo de nenhum?" Espero que este seja útil para pessoas que google algo nesse sentido e terra aqui.

O crédito vai para Xeek no canal irc #winapi freenode para compartilhar esta dica.

Em vez de colocá-los em um projeto, você pode colocar os arquivos em um solução de pasta . Um dos seus projectos pode ter uma ação de compilação que faz a cópia, mas uma vez que não será em um projeto, eles não vão tentar "construir".

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