Possível criar projeto do Visual Studio com saída Tipo de “nenhum”?
-
07-07-2019 - |
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!
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.dll
s 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:
-
Adicionar todos
.dll
s paraBundledDLLs
e definiu seu Copiar para o diretório de saída e Copiar se mais recente .Isso é feito em Project Explorer e Propriedades janelas.
-
diretório de saída do Configure
BundledDLLs
ser idêntico ao diretório de saída doMain
.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
-
Configurar
BundledDLLs
como uma dependência doMain
.NÃO add
BundledDLLs
como uma referência de projeto paraMain
, como você geralmente poder; em vez disso, use o Dependências do projeto para. Isto irá dizer a ferramenta de construção que sempre queMain
é construído, as necessidadesBundledDLLs
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 primeiroMain
do drop-down list; em seguida, verificarBundledDLLs
na lista de projetos a seguir.BundledDLLs
já está registrado como uma dependência doMain
.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. -
Adicionar um evento pós-compilação para
BundledDLLs
que exclui oBundledDLLs.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 procurandoBundledDLLs.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".