c# - O que está errado quando o Visual Studio me diz "xcopy saiu com o código 4"




visual-studio-2010 visual-studio-2012 (9)

Além da resposta aceita, o erro também pode ocorrer quando a pasta de destino é somente leitura (comum ao usar o TFS)

Eu não estou muito familiarizado com eventos pós-compilação, então estou um pouco confuso sobre o que está 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 rodar bem, apesar desse erro, mas eu não quero simplesmente ignorar este problema e esperar que nada de ruim aconteça. Estranhamente, essa linha começou como um único comando (o primeiro xcopy), mas à medida que continuei a compilar o projeto (corrigindo outros problemas, principalmente referências), a mensagem de erro expandiu-se 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

Alterne a guia watch para a "saída" e procure o comando xcopy. Às vezes, aqui você encontra mais alguma mensagem (a saída xcopy real) que poderia ajudá-lo a resolver o problema. Se você não vir a guia de saída, use o menu Visualizar-Saída para exibi-la.


Eu corri através desta questão, então eu corri o comando xcopy da linha de comando e disse:

File creation error - The requested operation cannot be performed on a file with
 a user-mapped section open.

Na verdade, era o Visual Studio segurando alguma coisa. Eu apenas reiniciei o Visual Studio e funcionou.


Eu recebi o erro ' exit with code 4 ' quando o comando xcopy tentou sobrescrever um arquivo readonly. Consegui resolver este problema adicionando / R ao comando xcopy. O / R indica que arquivos somente de leitura devem ser sobrescritos

comando antigo:

XCOPY /E /Y "$(ProjectDir)source file" "destination"

novo comando

XCOPY /E /Y /R "$(ProjectDir)source file" "destination"

Eu tinha um comando post build que funcionou muito bem antes de atualizar-se no VS 2017. Acontece que as ferramentas do SDK foram atualizadas e estavam sob um novo caminho para que não encontrasse a ferramenta que eu estava usando para assinar meus assemblies.

Isso mudou a partir disso ....

call "%VS140COMNTOOLS%vsvars32"
    "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\x64\sn.exe" -Ra "$(TargetPath)" "$(ProjectDir)Key.snk"

Para isso...

"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64\sn.exe" -Ra "$(TargetPath)" "$(ProjectDir)Key.snk"

Muito sutil, mas quebrando a mudança, então verifique seus caminhos após uma atualização, se você ver esse erro.


Eu tive o mesmo problema. Você também pode verificar o caminho que a barra está apontando. Para mim, funcionou usar backslash, em vez de barra. Exemplo

xcopy /s /y "C:\SFML\bin\*.dll" "$(OutDir)"

Ao invés de:

xcopy /s /y "C:/SFML/bin/*.dll" "$(OutDir)"

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ê inseriu um nome de unidade inválido ou uma 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 por meio de Project Properties > Right Click > Build Events > Post Build Event .

Observe que, se os termos de macro $(ProjectDir) ou semelhantes tiverem espaços nos caminhos resultantes quando expandidos, eles precisarão ser agrupados em aspas duplas. Por exemplo:

xcopy "$(ProjectDir)Library\dsoframer.ocx" "$(TargetDir)" /Y /E /D1

Outra coisa a observar são barras duplas invertidas, já que o xcopy não as tolera no parâmetro do caminho de entrada (mas tolera-as no caminho de saída ...).


Isso significa :

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 uma sintaxe inválida na linha de comando.

Então, basicamente, pode ser apenas sobre qualquer coisa haha ​​... tente executar o comando um de cada vez a partir do prompt de comando para descobrir qual parte do comando está lhe dando problemas.





xcopy