VS2005 SP1에서 [섀도 복사를 할 수 없습니다.]라는 메세지 해결 방법

2007. 8. 13. 11:17 IT 및 개발/VSTS & TFS
Visual Studio 2005 SP1에 보면 [ASP.NET 웹 응용 프로그램]이라는 프로젝트가 새로 생겼습니다.
이 프로젝트가 생기면서 웹 프로젝트도 파일 시스템이 아닌 프로젝트 단위로 관리가 가능해졌죠!!
현재 제가 프로젝트를 이 웹 응용 프로그램으로 진행을 하고 있는데 중간에 문제가 하나 발생을 했습니다.
프로젝트의 참조가 많아 지다보니 빌드를 다 하고 브라우저에서 볼려고 하는데 [섀도 복사를 할 수 없습니다.] 라는 메세지가 나오는 겁니다.
영문으로는 [Cannot Create/Shadow Copy '<projectname>'  when that file arleady exists] 이렇게 나오는거 같습니다.
이 문제가 발생하는 원인은 기존에 빌드된 dll 파일에 락이 걸려 있어서 생기는 문제입니다.
그럼 이젠 해결 방법을 알려 드리도록 하겠습니다.

일단 이 문제가 발생하는 프로젝트의 프로젝트 파일(csproj) 파일을 폅집이 가능하도록 에디터로 오픈하시기 바랍니다.
그런후에 빌드에 관련된 탭에 아래와 같이 적어 넣으시기 바랍니다.

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

위 명령어는 락에 걸린 파일이 있으면 삭제하라는 명령어 입니다.

그럼 예제로 알아보도록 하겠습니다.

shblitz.csproj
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="AfterBuild">
        <Exec Command="if exist $(TargetPath).locked del $(TargetPath).locked" />
    </Target>
</Project>

위 예제는 하시는 프로젝트에 따라서 달라 질수가 있으니, 단지 참고만 하시기 바랍니다.

참고 : 위 문제가 생겼을 경우 빌드를 다시 하면 해결이 됩니다. 전 4~5번까지 빌드를 해본적이 있네요!!

작성자 : 상현넘™ [SHBLITZ.NET]