Esta pergunta foi feita há algum tempo, mas se refere ao mesmo tipo de problema que eu estava tendo.
O problema:
- Queremos verificar nosso código.
- Queremos então construir nosso projeto.
- Durante nossa compilação, dependemos de Build Events para mover os arquivos, de modo que temos os arquivos adequados para o processo de compilação ser concluído.
- Quando nosso Build Event tenta copiar os arquivos, obtemos erros de Acesso negado.
O motivo:
- O Plug-in do Visual Studio do Team Foundation Server altera o atributo Somente Leitura em nossos arquivos para READONLY TRUE quando fazemos check-in em nossos arquivos.
Exemplo de evento de construção:
- copiar "$ (TargetDir) SomeFile.ext" "$ (ProjectDir)"
Acima, simplesmente precisamos mover um arquivo do nosso Caminho de construção de destino (as pastas bin \ debug ou bin \ release) para a nossa pasta de projeto. Na minha situação, isso foi feito para que eu pudesse incluir arquivos de projeto construído em meu instalador. Meu instalador não os estava pegando como parte do resultado do projeto.
A correção: (quase me chutei na cara quando descobri isso)
Novo evento de construção:
- atrib -R "$ (ProjectDir) SomeFile.ext"
- copiar "$ (TargetDir) SomeFile.ext" "$ (ProjectDir)"
- atrib + R "$ (ProjectDir) SomeFile.ext"
Estamos todos nos divertindo com o Build Events, certo? Acima eu simplesmente faço 2 coisas, removo o atributo somente leitura, agora os arquivos não são somente leitura. Copie meu arquivo como eu queria originalmente. Em seguida, substitua o atributo Read Only (opcional, eu acho) para manter o Visual Studio e o Team Foundations felizes.
E sim ... eu ainda estou me chutando na cara por causa disso.