Tenho um projeto com um evento pós-construção:
copy $(ProjectDir)DbVerse\Lunaverse.DbVerse.*.exe $(TargetDir)
Funciona bem sempre na minha máquina. Tenho um novo desenvolvedor que sempre recebe o erro "saiu com o código 1". Eu fiz com que ela executasse o mesmo comando em um prompt do DOS e funcionou bem. O que poderia estar causando isso? Existe alguma maneira de chegar ao erro real?
Ambos estamos usando o Visual Studio 2008.
visual-studio-2008
post-build
Tim Scott
fonte
fonte
Respostas:
Ela tinha um espaço em um dos nomes de pasta em seu caminho, e nenhuma aspas ao redor.
fonte
Aquele com os "Pings" me ajudou ... mas pode ser explicado um pouco melhor ...
Para mim, a solução foi mudar:
para isso:
Espero que funcione para você. :-)
fonte
Eu adicionei isso para futuros visitantes, pois esta é uma questão bastante ativa.
O ROBOCOPY sai com "códigos de sucesso" abaixo de 8. Consulte: http://support.microsoft.com/kb/954404
Isso significa que:
Resolvi isso facilmente adicionando isso ao final do arquivo de lote
Sugira que lidar com erros de ROBOCOPY desta forma
A confusão ocorrerá quando nenhum arquivo for copiado = nenhum erro no VS. Então, quando há mudanças, os arquivos são copiados, erros do VS, mas tudo o que o desenvolvedor queria foi feito.
Dica adicional: não use uma pausa no script, pois isso se tornaria uma pausa indefinida na construção do VS. ao desenvolver o script, use algo semelhante
timeout 10
. Você notará isso e comentará ao invés de ter uma construção suspensa.fonte
Meu motivo para o Código 1 foi que a pasta de destino era somente leitura. Espero que isso ajude alguém! Eu tive um evento de pós-construção para fazer uma cópia de um diretório para outro e o destino era somente leitura. Então, desmarquei o atributo somente leitura no diretório e todos os seus subdiretórios! Apenas certifique-se de que é um diretório seguro para isso!
fonte
Obtenha o monitor de processo do SysInternals, configure-o para observar o Lunaverse.DbVerse (no campo Caminho) no resultado da operação. Deve ser óbvio a partir daí o que deu errado
fonte
Tive que executar o VS como administrador para obter minha cópia pós-construção em um sistema operacional protegido ".. \ Common7 \ IDE \ PrivateAssemblies" para funcionar
fonte
Para aqueles que usam ' cópia ' comando na Build Events ( linha de comando evento pré-compilação ou / e linha de comando evento Post-Build ) do Projeto -> Propriedades : você ' copiar ' parâmetros de comando deve ser semelhante aqui:
copy "source of files" "destination for files"
. Lembre-se de usar aspas (para evitar problemas com espaços em strings de endereço).fonte
Eu tive um problema semelhante, mas especificamente em um ambiente de construção Jenkins. Para corrigir o problema, mudei de usar um comando de cópia no evento pós-compilação para usar um destino de cópia.
Eu mudei isso:
para isso:
e funciona bem agora.
O erro específico que estava recebendo era:
fonte
Consegui corrigir meu Código 1 executando o Visual Studio como Admin. Aparentemente, ele não tinha acesso para executar os comandos do shell sem Admin.
fonte
Como uma questão de boa prática, sugiro que você substitua o evento pós-compilação por uma tarefa de cópia de arquivo do MS Build .
fonte
Para mim, eu tinha que ter certeza de que o programa para o qual eu copiava o arquivo não estava funcionando no momento. Não houve erros na sintaxe. Espero que isso ajude alguém.
fonte
Acabei de receber o mesmo erro. Eu tinha um% no caminho de destino que precisava ser escapado
precisava ser
fonte
Ok, esse é um problema com muitas soluções, então eu só posto o meu para dar mais dicas às pessoas. Minha situação é verificar as pastas em seu caminho e certificar-se de que todas elas existem em sua máquina. Por exemplo: "$ (SolutionDir) \ partBin \ Bin \ $ (ProjectName) .pdb", mas "Bin" não está na pasta partBin.
fonte
$(SolutionDir)
é redundante.Para aqueles que usam o comando 'copiar' em Eventos de construção (linha de comando de evento de pré-construção ou / e linha de comando de evento de pós-construção) em Projeto -> Propriedades: a pasta de destino deve existir
fonte
Tantas soluções ...
No meu caso, tive que salvar o arquivo bat com codificação não Unicode (Western, Windows). Por padrão, quando adicionei o arquivo ao Visual Studio (e provavelmente deveria ter feito fora do VS), ele adicionou a codificação UTF-8.
fonte
Eu tive o mesmo problema e descobri que era porque eu havia renomeado o projeto. Entrei nas propriedades do projeto e alterei o nome do assembly e o namespace raiz para o nome do projeto e funcionou muito bem depois disso!
fonte
Ainda outra resposta ...
No meu caso, eu tinha um projeto do Visual Studio 2017 voltado para .Net Standard 1.3 e .Net Framework 2.0. Isso foi especificado no arquivo .csproj assim:
Eu também tinha uma linha de comando de evento pós-compilação como esta:
Em outras palavras, eu estava tentando copiar o .Net Framework .dll produzido pelo build para um local alternativo.
Isso estava falhando com este erro quando fiz uma reconstrução:
Depois de muita frustração, finalmente concluí que o que estava acontecendo era que o Rebuild excluía todos os arquivos de saída, depois fazia a compilação para .Net Standard 1.3 e, em seguida, tentei executar a linha de comando do evento pós-compilação, que falhou porque o arquivo a ser copiado ainda não foi construído.
Portanto, a solução foi alterar a ordem de construção, ou seja, construir primeiro para .Net Framework 2.0 e depois para .Net Standard 1.3.
Isso agora funciona, com a pequena falha de que a linha de comando do evento pós-compilação está sendo executada duas vezes, portanto, o arquivo é copiado duas vezes.
fonte
No meu caso, eu tive que
cd
(mudar de diretório) antes de chamar o arquivo bat, porque dentro do arquivo bat havia uma operação de cópia que especificava caminhos relativos.fonte