Não estou familiarizado com os eventos pós-compilação, por isso estou um pouco confuso com o que está acontecendo de errado com o meu programa. Ao compilar no visual studio 2010, recebo o seguinte:
The command "xcopy C:\Users\Me\Path\Foo.bar\Library\dsoframer.ocx C:\Users\Me\Path\Foo.bar\bin\Debug\ /Y /E /D
xcopy C:\Users\Me\Path\Foo.bar\ApplicationFiles C:\Users\Me\Path\Foo.bar\bin\Debug\ /Y /E /D
xcopy C:\Users\Me\Path\url\ C:\Users\Me\Path\Foo.bar\bin\Debug\ /Y /E /D
rmdir /S /Q C:\Users\Me\Path\Foo.bar\bin\Debug\.gwt-tmp" exited with code 4.
O programa parece funcionar bem, apesar desse erro, mas não quero ignorar esse problema e espero que nada de ruim aconteça. Estranhamente, essa linha começou como apenas um comando (o primeiro xcopy), mas enquanto eu continuava a compilar o projeto (corrigindo outros problemas, principalmente referências), a mensagem de erro se expandia cada vez mais. Alguma idéia do que poderia estar acontecendo?
Edit: Aqui estão os eventos pós-construção que parecem estar falhando -
xcopy $(ProjectDir)Library\dsoframer.ocx $(TargetDir) /Y /E /D
xcopy $(ProjectDir)ApplicationFiles $(TargetDir) /Y /E /D
xcopy $(SolutionDir)com.myUrl.gwt\www $(TargetDir) /Y /E /D
rmdir /S /Q $(TargetDir).gwt-tmp
c#
visual-studio-2010
visual-studio-2012
xcopy
Sonhador Corvo
fonte
fonte
Administrator privileges
. Copiar para locais específicos requer direitos de administrador.Respostas:
O código de saída Xcopy 4 significa " Ocorreu um erro de inicialização. Não há memória ou espaço em disco suficiente, ou você digitou um nome de unidade inválido ou sintaxe inválida na linha de comando " .
Parece que o Visual Studio está fornecendo argumentos inválidos para o xcopy. Verifique seu comando de evento pós-compilação via
Project > Right Click > Properties > Build Events > Post Build Event
.Observe que, se os
$(ProjectDir)
termos da macro ou similares tiverem espaços nos caminhos resultantes quando expandidos, eles precisarão ser colocados entre aspas duplas. Por exemplo:fonte
"command args"
).$(ProjectDir)
(e / ou similar) tiver espaços no caminho expandido, ele precisará ser colocado entre aspas. Por exemplo:xcopy "$(ProjectDir)Library\dsoframer.ocx" "$(TargetDir)" /Y /E /D1
Mude a guia watch para "ouput" e procure o comando xcopy. Às vezes, aqui você encontra mais alguma mensagem (a saída real do xcopy) que pode ajudá-lo a resolver o problema. Se você não vir a guia de saída, use o menu Exibir-Saída para mostrá-la.
fonte
Além da resposta aceita, o erro também pode ocorrer quando a pasta de destino é somente leitura (comum ao usar o TFS)
fonte
Se o arquivo de origem não for encontrado, o xcopy retornará o código de erro 4 também.
fonte
$(TargetDir)
que termina comRelease\
. Usando$(ProjectDir)\bin\Release
sem a fuga\\
funcionou para mimRecebi o erro ' encerrado com o código 4 ' quando o comando xcopy tentou substituir um arquivo somente leitura. Eu consegui resolver esse problema adicionando / R ao comando xcopy. O / R indica que os arquivos somente leitura devem ser substituídos
comando antigo:
novo comando
fonte
Como outras respostas explicam, o código de saída 4 pode ter muitas causas.
Percebi um caso em que os nomes dos caminhos resultantes excederam o comprimento máximo permitido (exatamente como aqui ).
Substituí o xcopy por robocopy para o evento pós-compilação afetado; O robocopy parece manipular caminhos ligeiramente diferentes e conseguiu concluir a tarefa de cópia que o xcopy não conseguiu.
fonte
Significa :
Então, basicamente, pode ser qualquer coisa haha ... tente executar o comando um de cada vez no prompt de comando para descobrir qual parte de qual comando está causando problemas.
fonte
Eu recebi isso junto com a mensagem
ao copiar para um compartilhamento de rede sem especificar o nome da unidade, por exemplo
Onde
era esperado
fonte
Corri com esse problema, executei o comando xcopy na linha de comando e ele disse:
Na verdade, era o Visual Studio segurando algo. Acabei de reiniciar o Visual Studio e funcionou.
fonte
No meu caso, o problema ocorreu devido à ordem de compilação incorreta. Um projeto tinha um comando xcopy em eventos pós-compilação para copiar arquivos da pasta bin para outra pasta. Porém, devido a dependências incorretas, novos arquivos foram criados na pasta bin enquanto o xcopy está em andamento.
No VS, clique com o botão direito do mouse no projeto em que você tem eventos pós-compilação. Vá para Construir dependências> Dependências do projeto e verifique se está correto. Verifique também a ordem de criação do projeto (próxima guia para dependências).
fonte
Este erro ocorre devido a espaços em branco nos quais seu repositório é copiado. Por exemplo, meu projeto é copiado no local abaixo
c://projects/My rest project
e você pode ver os espaços em branco lá. Se você alterar o caminho do repositório para abaixo, ele deve funcionarc://projects/myrestproject
fonte
Eu tive o mesmo problema. Você também pode verificar para onde a barra está apontando. Para mim, trabalhou para usar barra invertida, em vez de barra invertida. Exemplo
Ao invés de:
fonte
Eu tinha um comando pós-compilação que funcionou bem antes de fazer uma atualização no VS 2017. As ferramentas do SDK foram atualizadas e estavam em um novo caminho, por isso não foi possível encontrar a ferramenta que eu estava usando para assinar meus assemblies.
Isso mudou a partir disso ....
Para isso...
Mudança muito sutil, mas que quebra, por isso verifique seus caminhos após uma atualização, se você vir esse erro.
fonte
Outra coisa a observar é barras invertidas duplas, uma vez que
xcopy
não tolerá-los no parâmetro caminho de entrada (mas não tolerá-los no caminho de saída ...).fonte
Se alguma outra solução estiver no modo de depuração, pare-as primeiro e depois reinicie o visual studio. Funcionou para mim.
fonte
Isso também pode ocorrer se a pasta de destino for usada por outros processos . Feche todos os programas que podem usar a pasta de destino e tente.
Você pode usar o monitor de recursos (ferramenta do Windows) para verificar os processos que usam sua pasta de destino.
Isso funcionou para mim!
fonte