Atualização: Um exemplo de projeto que reproduz esse bug pode ser encontrado aqui no Microsoft Connect . Também testei e verifiquei que a solução dada na resposta aceita abaixo funciona nesse projeto de amostra. Se esta solução não funcionar, você provavelmente está tendo um problema diferente (que pertence a uma pergunta separada).
Essa é uma pergunta feita antes, tanto aqui no Stack Overflow quanto em outros lugares, mas nenhuma das sugestões que encontrei até agora me ajudou, então só tenho que tentar fazer uma nova pergunta.
Cenário: Eu tenho um aplicativo Windows Forms simples (C #, .NET 4.0, Visual Studio 2010). Ele possui alguns formulários básicos dos quais a maioria dos outros herdam, usa o Entity Framework (e as classes POCO) para acesso ao banco de dados. Nada extravagante, sem multi-threading ou qualquer coisa.
Problema: Tudo ficou bem por um tempo. Então, do nada, o Visual Studio falhou ao criar quando eu estava prestes a iniciar o aplicativo. Recebi o aviso "Não foi possível excluir o arquivo '... bin \ Debug \ [ProjectName] .exe'. O acesso ao caminho '... bin \ Debug \ [ProjectName] .exe' foi negado." e o erro "Não é possível copiar o arquivo 'obj \ x86 \ Debug \ [ProjectName] .exe' para 'bin \ Debug \ [ProjectName] .exe'. O processo não pode acessar o arquivo 'bin \ Debug \ [ProjectName] .exe 'porque está sendo usado por outro processo ". (Recebo o aviso e o erro ao executar o Rebuild, mas apenas o erro ao executar o Build - não acha isso relevante?)
Entendo perfeitamente bem o que diz a mensagem de aviso e erro: O Visual Studio está obviamente tentando substituir o arquivo exe enquanto, ao mesmo tempo, possui um bloqueio por algum motivo. No entanto, isso não me ajuda a encontrar uma solução para o problema ... A única coisa que encontrei funcionando é desligar o Visual Studio e iniciá-lo novamente. Construir e lançar funciona, até que eu faça uma alteração em alguns formulários, tenho o mesmo problema novamente e tenho que reiniciar ... Muito frustrante!
Como mencionei acima, esse parece ser um problema conhecido; portanto, existem muitas soluções sugeridas. Vou apenas listar o que já tentei aqui, para que as pessoas saibam o que pular:
- Criando uma nova solução limpa e copie os arquivos da solução antiga.
Adicionando o seguinte ao evento de pré-construção do projeto:
if exist "$(TargetPath).locked" del "$(TargetPath).locked" if not exist "$(TargetPath).locked" if exist "$(TargetPath)" move "$(TargetPath)" "$(TargetPath).locked"
Adicionando o seguinte às propriedades do projeto (arquivo .csproj):
<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
No entanto, nenhum deles funcionou para mim, então você provavelmente pode ver por que estou começando a ficar um pouco frustrado. Não sei mais para onde procurar, então espero que alguém tenha algo a me dar! Isso é um bug no VS e, se houver, existe um patch? Ou fiz algo errado, tenho uma referência circular ou similar e, em caso afirmativo, como posso descobrir?
Todas as sugestões são muito apreciadas :)
Atualização: Como mencionado no comentário abaixo, também verifiquei, usando o Process Explorer, se realmente é o Visual Studio que está bloqueando o arquivo.
fonte
Respostas:
Isso vai parecer estúpido, mas eu tentei todas essas soluções, executando o VS2010 no Windows 7. Nenhuma delas funcionou, exceto a renomeação e construção, o que era MUITO entediante, para dizer o mínimo. Eventualmente, localizei o culpado e acho difícil de acreditar. Mas eu estava usando o seguinte código em AssemblyInfo.cs ...
Isso é bastante comum, mas por algum motivo, alterar a versão para 2.0.0.0 fez as coisas funcionarem novamente. Eu não sei se é uma coisa específica do Windows 7 (eu só o uso há 3-4 semanas), ou se é aleatória, ou o quê, mas foi corrigida por mim. Eu estou supondo que o VS estava mantendo um controle sobre cada arquivo gerado, para saber como incrementar as coisas? Eu realmente não tenho certeza e nunca vi isso acontecer antes. Mas se alguém por aí também estiver arrancando os cabelos, tente.
fonte
Como não recebi mais comentários sobre esse problema, pensei em compartilhar o que acabou sendo minha solução:
Conforme sugerido por Barry em um comentário à postagem original, renomear manualmente '... bin \ Debug [ProjectName] .exe' para outra coisa (por exemplo, '[ProjectName] 1.exe' ) é uma solução alternativa (I ' no entanto, não tenho permissão para excluir o arquivo pessoalmente, e devo dizer que acho isso um pouco estranho, pois acreditamos que o mesmo bloqueio que impede a exclusão também impediria a renomeação ...). Não é uma boa solução, mas é razoavelmente rápida (pelo menos depois de fazer isso algumas vezes, quase se torna uma rotina) e, pelo menos, muito mais rápido do que reiniciar o Visual Studio, o que eu fiz no começo.
Caso alguém se pergunte, eu também poderia acrescentar que só vejo esse problema de forma semi-aleatória. Isso geralmente acontece depois que eu faço algumas alterações no modo de design de um formulário (mas nem sempre). Normalmente, isso não acontece se eu alterar apenas o código da lógica de negócios ou o código não visual (mas, às vezes, muda ...). Frustrante, de fato, mas pelo menos eu tenho um truque que funciona para mim - vamos apenas torcer para que meu próximo projeto também não enfrente esse problema ...
@ Barry: se você deseja obter crédito pelo seu comentário, sinta-se à vontade para publicá-lo como resposta e eu aceitarei :)
fonte
Encontrei uma solução simples, basta desativar o Windows Indexing Services para a pasta e subpastas do projeto
fonte
Eu tenho o mesmo problema (MSB3021) com o projeto WPF no VS2008 (no Windows 7 x32). O problema aparece se eu tentar executar o aplicativo muito rapidamente após a execução anterior. Depois de alguns minutos, o arquivo exe é desbloqueado por si só e eu posso executar o aplicativo novamente. Mas uma pausa tão longa me irrita. A única coisa que realmente me ajudou foi executar o VS como administrador.
fonte
Quando me deparei com esse problema, isso tem a ver com o fato de que o projeto que estou tentando criar é definido como o projeto de inicialização na solução, bloqueando o arquivo .exe na pasta obj (também aparece no seu gerenciador de tarefas) clique com o botão direito do mouse em outro projeto na sua solução e escolha definir projeto de inicialização. Isso liberará o bloqueio, o removerá do gerenciador de tarefas e deverá permitir a criação.
fonte
Tentei todas as outras sugestões nas respostas aqui, nenhuma das quais funcionou. Eventualmente, usei o Process Monitor para descobrir que meu .exe que o VS2010 estava falhando ao criar estava bloqueado pelo processo do sistema (PID = 4). Pesquisando SO para situações que envolvem isso nessa resposta.
Resumido: se você tiver o serviço Application Experience desativado (como eu fiz), reative-o e inicie-o. Dois anos de agravamento terminaram.
fonte
Eu também tive um problema muito semelhante a esse e descobri que, no meu caso, disponibilizei a pasta bin \ debug como uma pasta compartilhada no VMware e VMware, Explorer no convidado da VM ou talvez até um antivírus O programa sob o convidado (embora eu não ache que tenha um instalado) estava segurando um identificador no (s) arquivo (s).
fonte
Desativar "Ativar o processo de hospedagem do Visual Studio"
fonte
Eu sugiro o download
Process Explorer
para descobrir exatamente qual processo está bloqueando o arquivo. Pode ser encontrado em:http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
fonte
Usando o Visual Studio, nunca consegui criar um projeto simples para reproduzir o erro.
Minha solução foi desativar o processo de hospedagem do Visual Studio.
Para os interessados, anexei um rastreamento de identificador para o identificador ofensivo:
fonte
SE SEU PROBLEMA NÃO FOR RESOLVIDO AINDA:
O erro do Visual studio é:
"O processo não pode acessar o arquivo 'bin \ Debug ** app.exe **' porque está sendo usado por outro processo."
Então, vá para o gerenciador de tarefas do Windows (Ctrl + Shift + Esc), encontre o nome do aplicativo e force-o a fechar por Endprocces.
fonte
Aqui está outra possibilidade:
Depois de receber esse erro no vs2012 / win7, tentei excluir o arquivo no diretório bin e o explorer indicou que o arquivo estava em uso pelo XAML UI Designer.
Fechei todas as abas que abri no VS, fechei o VS e, em seguida, certifiquei-me de matar todos os processos do MSBuild no gerenciador de tarefas. Finalmente, depois de reiniciar o VS, consegui criar a solução.
e outra causa possível:
Percebi outra causa possível para esse problema. Após fazer uma refatoração de código, mover projetos para dentro e para fora de uma solução, minhas referências de projeto não estavam mais fazendo referência aos projetos na solução conforme o esperado.
Esse estúdio visual enganou ao pensar que poderia criar alguns projetos simultaneamente, criando os bloqueios de arquivo.
Edição: Eu tive isso acontecer em algumas ocasiões, mesmo recentemente, com o VS2012 e ele corrige uma vez que eu defino a ordem de compilação para as dependências corretas, elimine quaisquer processos de msbuild que o VS deixou em execução e reinicie o VS. Eu mato os processos do msbuild apenas para ter certeza, mas o fechamento do VS também deve eliminá-los.
O que costumo fazer para fazer isso é refatorar um projeto de modo que ele dependa de outro projeto na solução que não estava fazendo referência na última compilação. Às vezes, isso parece confundir o VS e não atualiza a ordem de compilação.
Para verificar a ordem de construção: Clique com o botão direito do mouse na Solução no Gerenciador de Soluções e selecione "Ordem de Construção do Projeto ..." e verifique se as dependências foram anotadas corretamente para cada projeto.
fonte
Reiniciar o IIS - pode ser um processo anexado ao depurador
fonte
Desative o antivírus e tente. Eu também estava enfrentando esse problema ... mas, no meu caso, o antivírus estava bloqueando meu aplicativo quando o desabilitei.
fonte
Eu enfrentei o mesmo erro.
Resolvi o problema excluindo todo o conteúdo da lixeira pastas de todos os projetos / bibliotecas dependentes.
Este erro ocorre principalmente devido a alterações de versão.
fonte
Isso foi arquivado várias vezes no Connect, site de relatórios de bugs da comunidade da Microsoft. Para sua informação, acredito que esse bug aflige o Visual Studio desde 2003 e foi corrigido após o RTM a cada vez. :( Uma das referências é a seguinte:
https://connect.microsoft.com/VisualStudio/feedback/details/568672/handles-to-project-dlls-are-not-released-when-compiling?wa=wsignin1.0
fonte
Faça as coisas simples primeiro.
Verifique se parte da sua solução não está bloqueada por um processo em execução.
Por exemplo, executei o "InstallUtil 'no meu serviço Windows (que eu normalmente teste de unidade a partir de um console).
Isso bloqueou algumas das minhas DLLs na pasta bin do projeto de serviço do Windows. Quando reconstruí, recebi a exceção nesta edição.
Eu parei o serviço do windows, reconstruído e ele conseguiu.
Verifique o Gerenciador de tarefas do Windows para o seu aplicativo antes de executar qualquer uma das etapas avançadas deste problema.
Então, quando você ouvir passos, pense em cavalos, não em zebras! (do amigo estudante de medicina)
fonte
Eu tive o mesmo problema. Ele disse que não era possível copiar do bin \ debug para obj .....
Quando eu construo o projeto da web, descobri que minha DLL estava toda na pasta bin e não no bin \ debug. Durante a publicação vs estava procurando arquivos em bin \ debug. Então eu abri o arquivo de projeto da web no editor e procure por instâncias de bin \ debug e encontrei todas as DLLs mencionadas como bin \ debug \ mylibrary.dll. Eu removi tudo \ debug do caminho e publiquei novamente. Desta vez, vs foi capaz de encontrar toda a DLL na pasta bin e publicar com êxito.
Não faço ideia de como esse caminho foi alterado no arquivo de projeto da web.
Passei mais de 5 horas depurando isso e finalmente encontrei a solução por conta própria.
Esta é a resposta certa .
fonte
Se nenhuma das opções acima funcionar, e você estiver desenvolvendo um aplicativo de console:
Tente digitar qualquer caractere em Program.cs e exclua-o. Não faço idéia do porquê disso funcionar, mas parece resolver o problema 'Não é possível copiar' todas as vezes.
fonte
Isso geralmente é causado pelo Avast.
Normalmente, eu posso executar meus projetos no Release independentemente, mas ao executar a depuração, ele falha regularmente.
Acabei de adicionar uma exclusão para a minha pasta de projetos e o problema parece desaparecer. Suponho que isso também possa ser causado por outro software antivírus.
fonte
Renomear o arquivo .exe e .pub funcionou para mim, mas é realmente tedioso. Também enfrento o problema de não poder editar durante uma sessão de depuração. Por fim, fui para a Página de configuração de segurança avançada, conforme:
https://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k%28%22VS.ERR.DEBUG_IN_ZONE_NO_HOSTPROC%3a11310%22%29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORKS % 3dV4.0% 22% 29 & rd = true
Desmarque e selecione novamente a caixa de seleção "Ativar configurações de segurança do ClickOnce". Tem sido sem problemas há alguns dias agora ....
fonte
Para mim, isso estava sendo causado por ter um prompt de comando aberto na pasta de destino (
C:\users\username\source\repos\project\project\bin\debug\app.publish
).Não sei por que DEBUGGING requer acesso à pasta de publicação, mas fechar a janela de comando resolveu o problema para mim.
fonte
Caso alguém esteja enfrentando isso ao tentar depurar um teste de unidade ou executar um teste de unidade, tive que interromper os dois processos a seguir para liberar o arquivo:
fonte
Tentei várias soluções que você forneceu, mas ocasionalmente ainda recebo esse erro. Tenho certeza de que meu processo não está em execução e, quando tento excluir o arquivo executável com o Internet Explorer, ele é removido da lista de arquivos, mas pressiono F5 e pronto, o arquivo está de volta. Não foi excluído.
Mas se eu excluir o arquivo através do TotalCommander, o arquivo exe é realmente excluído e posso criar o projeto com sucesso.
Eu estou usando o Windows 7 x64 e comandante total 7.56a 32 bits.
fonte
Nenhuma das outras respostas funcionou para mim, mas fechar todas as guias abertas no Visual Studio parece ter resolvido o problema.
fonte
Sei que essa é uma pergunta muito antiga, mas recentemente tive o erro "não é possível copiar do obj para o bin" no VS 2012. Sempre que tentei reconstruir um determinado projeto, recebi a mensagem. A única solução era fazer uma limpeza antes de cada reconstrução.
Depois de muita investigação, aconteceu que eu tinha uma declaração de aviso de pragma incompleta em um dos meus arquivos que não impedia a compilação de ter êxito, mas estava de alguma forma confundindo o VS em manter os arquivos bloqueados.
No meu caso, eu tinha o seguinte na parte superior do arquivo:
É isso aí. Eu acho que estava tentando fazer algo há um tempo e me distraí e nunca terminei o processo, mas os avisos do VS sobre essa linha específica foram perdidos no shuffle. Eventualmente, notei o aviso, removi a linha e recompilei todas as vezes desde então.
fonte
Quando enfrentei um problema semelhante, a única coisa que parecia funcionar foi:
fonte
Para os Serviços do Windows usando o WCF, encerrei o processo do host WFC e funcionou. Eu odeio quando isso acontece, e acontece aleatoriamente às vezes.
fonte
Minha solução não tem nada a ver com versões, processos sendo bloqueados, reiniciando ou excluindo arquivos.
Na verdade, o problema ocorreu devido à falha na compilação e não ao erro correto. O problema real era uma falha de design:
Depois de alterar o escopo de "a" para fora da função ou de não usar "a" depois
Task.Factory.StartNew();
, consegui construir novamente.Isso aconteceu ao usar a Atualização 4 do VS2012 no Windows7x64 sp1.
Mensagem de erro:
fonte
Eu encontrei com o VS2013, eu recebo esse erro regularmente. Algo que parece funcionar razoavelmente bem é executar uma solução de reconstrução antes de tentar executar o aplicativo. Descobri que executar uma LIMPEZA às vezes funciona, mas a solução de reconstrução parece funcionar de forma mais consistente.
fonte