c# - origem - não é possível copiar o arquivo obj debug




Visual Studio “Não foi possível copiar”… durante a compilação (20)

Eu continuo recebendo este erro durante a construção do meu projeto VS2012 C #

Error   41  Could not copy "obj\Debug\WeinGartner.WeinCad.exe" to
 "bin\Debug\WeinGartner.WeinCad.exe". 
 Exceeded retry count of 10. Failed.    


Error   42  Unable to copy file "obj\Debug\WeinGartner.WeinCad.exe" to
"bin\Debug\WeinGartner.WeinCad.exe". The process cannot access the file
'bin\Debug\WeinGartner.WeinCad.exe' because it is being used by another 
process.    

Agora eu descobri que matar o processo

Weingartner.WeinCad.vhost.exe

funciona (às vezes), mas isso está me dando nos nervos. Qualquer maneira de impedir isso de acontecer?

Minhas configurações de depurador são


Exceção

Em alguns casos, no Visual Studio, quando você (Construir || Reconstruir) em cima da execução do IISExpress enfrentou essa Exceção:

Não é possível copiar o arquivo "obj \ Debug \ YourProjectName.dll" para bin \ YourProjectName.dll ". O processo não pode acessar o arquivo 'bin \ YourProjectName.dll' porque está sendo usado por outro processo

Solução

  1. Clique com o botão direito do mouse no projeto da Web que precisa ser construído.
  2. Clique nas propriedades.
  3. Selecione a guia Construir eventos no lado esquerdo.
  4. Na linha de comando Pre-build events, cole estas 2 linhas:
tasklist /fi "imagename eq iisexpress.exe" |find ":" > nul
if errorlevel 1 taskkill /f /im "iisexpress.exe"

Você é bom 2 GO!


  1. Abrir propriedades do projeto [menu> projeto> propriedades]
  2. Escolha a aba "debug"
  3. Desmarque a opção "Ativar o processo de hospedagem do visual studio"
  4. Comece a depurar [F5]
  5. Você receberá um aviso de segurança, apenas "ok". Deixa a aplicação em execução
  6. Pare a depuração.
  7. Marque a opção "Ativar o processo de hospedagem do Visual Studio", na guia Depurar,
  8. Agora, tente iniciar a depuração, você não verá o erro novamente

[Trabalhe para mim]


@ Geoff ( https://.com/a/25251766/3739540 ) resposta é boa, mas lança código de erro 1 na recompilação.

Aqui está o que funcionou para mim (2> nul 1> nul no final + exit 0):

(if exist "$(TargetDir)*old.pdb" del "$(TargetDir)*old.pdb") & (if exist "$(TargetDir)*.pdb" ren "$(TargetDir)*.pdb" *.old.pdb) 2>nul 1>nul
(if exist "$(TargetDir)*old.dll" del "$(TargetDir)*old.dll") & (if exist "$(TargetDir)*.dll" ren "$(TargetDir)*.dll" *.old.dll) 2>nul 1>nul
exit 0

Adicionar no evento de pré-compilação do seu projeto mestre taskkill / f / fi "pid gt 0" / im "YourProcess.vshost.exe"


Citar:

Uma solução alternativa é colocar isso na propriedade de linha de comando do evento Pre-build do projeto> (Na guia Construir Eventos):

Fragmento de código

if exist "$(TargetPath).locked" del "$(TargetPath).locked"

if exist "$(TargetPath)" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"

Consegui corrigir esse problema (VS 2010) através do fornecimento após a ação de pré-compilação;

if exist "$(TargetPath).locked" del "$(TargetPath).locked"

if exist "$(TargetPath)" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"

Eu acho que resolvi remover a marca de seleção para Break all processes when one process breaks em opções de depuração (op primeira captura de tela-> segunda opção).
Tem sido construindo / funcionando bem por um tempo desde que eu desmarcada.
Estou usando os controles MySql NET Connector e DevExpress no meu projeto. Pode ser um deles não estava dispondo de conexões, encadernações, etc. bem porque essa bandeira estava sendo ativada.

EDITADO: definitivamente funciona! Não mais 'Não é possível copiar o arquivo' e não há mais erros de designer de formulário.


Eu encontrei mensagens de erro semelhantes no Visual Studio 2013.

Na maioria das vezes, descobri que essa situação ocorreu quando um processo de depuração foi interrompido devido a uma exceção.

Quando clean + build não resolveu este problema para mim, tive sucesso fazendo o seguinte:

  • Fechando o Visual Studio
  • Excluindo as pastas bin e obj e
  • Reabrindo o Visual Studio.

Este "bug" existe desde o Visual Studio 2003.

Finalmente, também descobri que muitas vezes posso superar esse problema simplesmente renomeando o arquivo executável e depois excluindo-o.


Eu finalmente como consertar isso. Por que não podemos continuar a depurar após a primeira depuração porque o primeiro exe de depuração ainda está em execução. Assim, após a primeira depuração, você precisa ir para o Gerenciador de Tarefas -> Processar guia -> [nome do seu projeto exe] finalizar o processo exe.

funciona para mim :)


Eu não posso dar uma solução para evitar que isso aconteça, mas você pode pelo menos RENOMEAR o arquivo bloqueado (windows explorer, ou janela de comando clássica) e depois compilar / construir. Não há necessidade de reiniciar ou reiniciar o VS201x. Com alguma experiência, você pode adicionar um script de pré-compilação para excluir arquivos antigos ou renomeá-los para fora do caminho, caso haja um bloqueio.


Eu resolvi isso matando o IISExpress no gerenciador de tarefas


Killing the vstest.executionengine.exe processo (s) resolve esse problema 90% do tempo para mim. Se isso não funcionar, também será eliminado o QTAgent32.exe e, em seguida, a exclusão das pastas / bin e / obj do projeto em questão.

Esta é a parte mais irritante do meu dia de trabalho. :)


Minha contribuição de 10 centavos.

Ainda tenho esse problema ocasionalmente no VS 2015 Update 2.

Descobri que o destino de compilação de comutação resolve o problema.

Tente isto: se você estiver no DEBUG, alterne para RELEASE e construa, e então retorne ao DEBUG. O problema se foi.

Stefano


No Visual Studio Premium 2013 (atualização 3), resolvi isso com um one-liner de pré-compilação:

(if exist "$(TargetDir)*old.pdb" del "$(TargetDir)*old.pdb") & (if exist "$(TargetDir)*.pdb" ren "$(TargetDir)*.pdb" *.old.pdb)

Isso exclui graciosamente todos os arquivos PDB antigos (se puder) e, em seguida, renomeia qualquer .old.pdb uma extensão .old.pdb . Um bom efeito colateral é que, se o antigo PDB ainda estiver bloqueado, ele adicionará outra peça .old ao nome do arquivo, e todos serão limpos da próxima vez que você reiniciar o Visual Studio e fizer uma compilação.

Por exemplo, a sessão de compilação / depuração 1 deixa MyProject.pdb bloqueado.
A próxima vez que você construir:
MyProject.pdb -> MyProject.old.pdb

Em seguida, a sessão de compilação / depuração 2 é iniciada e ambos MyProject.pdb e MyProject.old.pdb ainda estão bloqueados:
MyProject.old.pdb -> MyProject.old.old.pdb
MyProject.pdb -> MyProject.old.pdb

Finalmente, reiniciar o Visual Studio e fazer uma compilação nova eliminará ambos, e continuará o processo como de costume.


Para mim, foi o antivírus Avast que não deixará o visual studio gravar / ler / executar arquivos. Então eu tive que adicionar a pasta Visual studio 2010/2012 à lista de exclusão de antivírus. E logo depois disso ... funciona.


Parece que por alterar o nome do assembly de um projeto corrige o problema.

Então, ao invés disso

Eu mudo para isso

Observe que eu apenas mudei de Increment and Recall para Increment_Recall , acabei de remover os espaços. Agora está funcionando bem para mim.


Se você está depurando modelos T4 , isso acontece o tempo todo. Minha solução (antes que o MS conserte isso) seria apenas para matar esse processo:

Gerenciador de Tarefas -> Usuário -> T4VSHostProcess.exe

Esse processo só aparece quando você depura um modelo T4, não quando você executa um.


Siga os passos abaixo

  1. Abra o Gerenciador de Tarefas (Ctrl + Alt + Delete)
  2. Na guia Desempenho, selecione < ProjectNameOfYours.exe >.
  3. Clique em Finalizar processo.
  4. Agora construa a solução.

As etapas acima resolveram o erro permanentemente :)


Veja esta outra resposta . Basicamente, você poderia ter processos MSBuild.exe em execução nos arquivos de recursos que consomem o plano de fundo. Se você tiver alguma tarefa de pré ou pós-construção que faça com que um MSBuild seja expulso via linha de comando, tente adicionar o sinalizador "/ nr: false" a esse comando. Mas, novamente, veja a resposta anterior para detalhes mais específicos.


Você deve desativar seu antivírus (especialmente se for um Avast) e tente novamente. Isso me ajudou. O problema é que o debugger / builder cria o arquivo .exe que é identificado como uma ameaça pelo Avast e, portanto, excluído logo antes de poder ser executado pelo VS.





process