Em uma compilação bem-sucedida, desejo copiar o conteúdo do diretório de saída para um local diferente na mesma pasta "base" . Essa pasta pai é uma parte relativa e pode variar com base nas configurações do Controle de origem.
Listei alguns dos valores de macro disponíveis para mim ...
$ (SolutionDir) = D: \ GlobalDir \ Version \ AppName \ Solution1 \ build
$ (ProjectDir) = D: \ GlobalDir \ Version \ AppName \ Solution1 \ Version \ ProjectA \
Quero copiar o conteúdo do Dir de Saída para a seguinte pasta:
D: \ GlobalDir \ Version \ AppName \ Solution2 \ Project \ Dependency
O local base "D: \ GlobalDir \ Version \ AppName" precisa ser buscado em uma das macros acima. No entanto, nenhum dos valores da macro lista apenas o local pai.
Como extrair apenas o local base do comando post build copy?
Aqui está o que você deseja colocar na linha de comando do evento Pós-compilação do projeto:
EDIT: ou se o nome do seu destino for diferente do nome do projeto.
fonte
/Y
. Obrigado por mostrar todo o comando.xcopy
com caracteres universais e os interruptores apropriados para atingir um resultado semelhante, mantendo ao mesmo tempo a estrutura da pasta de origem (árvore), tais como:xcopy /i /e /s /y /f "<source>\MyFolder\*" "<destination>\MyFolder"
copy /Y "$(TargetPath)" "$(SolutionDir)somewhere\"
sem a barra invertida extra, desde $ (SolutionDir) inclui uma barra invertida (pelo menos no VS2012)Você poderia tentar:
fonte
Acho que isso está relacionado, mas tive um problema ao criar diretamente usando
msbuild
linha de comando (a partir de um arquivo em lotes) vs criar no VS.Usando algo como o seguinte:
(observação: em
start XCOPY
vez de serXCOPY
usado para solucionar um problema de permissões que impedia a cópia)A macro foi
$(SolutionDir)
avaliada ao..\
executar o msbuild a partir de um arquivo em lote, o que resultou naXCOPY
falha do comando. Caso contrário, funcionou bem quando criado no Visual Studio. Confirmado usando/verbosity:diagnostic
para ver a saída avaliada.O uso da macro
$(ProjectDir)..\
, que equivale à mesma coisa, funcionou bem e manteve o caminho completo nos dois cenários de compilação.fonte
Start
trabalhou para mim (paraxcopy
em uma pasta compartilhada).Não faria sentido usar o msbuild diretamente? Se você estiver fazendo isso com cada compilação, poderá adicionar uma tarefa msbuild no final? Se você apenas deseja ver se não consegue encontrar outro valor de macro que não seja mostrado no IDE do Visual Studio, você pode ativar as opções do msbuild para diagnosticar e isso mostrará todas as variáveis que você pode usar, como bem como seu valor atual.
Para ativar isso no visual studio, vá para Ferramentas / Opções, role a exibição em árvore para a seção chamada Projetos e soluções, expanda isso e clique em Construir e executar, à direita, há uma lista suspensa que especifica a verbosidade da saída da construção , definindo isso como diagnóstico, mostrará quais outros valores de macro você pode usar.
Como não sei até que nível você gostaria de ir e quão complexo você deseja que sua construção seja, isso pode lhe dar uma idéia. Eu tenho feito recentemente scripts de compilação, que até executam código SQL como parte da compilação. Se você quiser mais ajuda ou até mesmo alguns exemplos de scripts de construção, avise-me, mas se for apenas um pequeno processo que você deseja executar no final da construção, talvez o script completo do msbuild esteja um pouco exagerado. .
Espero que ajude Rihan
fonte