Visual Studio 2005 SP1에 보면 [AP.NET 웹 응용 프로그램]이라는 프로젝트가 새로 생겼습니다.
이 프로젝트가 생기면서 웹 프로젝트도 파일 시스템이 아닌 프로젝트 단위로 관리가 가능해졌죠!!
현재 제가 프로젝트를 이 웹 응용 프로그램으로 진행을 하고 있는데 중간에 문제가 하나 발생을 했습니다.
프로젝트의 참조가 많아 지다보니 빌드를 다 하고 브라우저에서 볼려고 하는데 [섀도 복사를 할 수 없습니다.] 라는 메세지가 나오는 겁니다.
영문으로는 [Cannot Create/Shadow Copy '<projectname>' when that file arleady exists] 이렇게 나오는거 같습니다.
이 문제가 발생하는 원인은 기존에 빌드된 dll 파일에 락이 걸려 있어서 생기는 문제입니다.
그럼 이젠 해결 방법을 알려 드리도록 하겠습니다.
일단 이 문제가 발생하는 프로젝트의 프로젝트 파일(csproj) 파일을 폅집이 가능하도록 에디터로 오픈하시기 바랍니다.
그런후에 빌드에 관련된 탭에 아래와 같이 적어 넣으시기 바랍니다.
위 명령어는 락에 걸린 파일이 있으면 삭제하라는 명령어 입니다.
그럼 예제로 알아보도록 하겠습니다.
위 예제는 하시는 프로젝트에 따라서 달라 질수가 있으니, 단지 참고만 하시기 바랍니다.
참고 : 위 문제가 생겼을 경우 빌드를 다시 하면 해결이 됩니다. 전 4~5번까지 빌드를 해본적이 있네요!!
작성자 : 상현넘™ [SHBLITZ.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>
<Target Name="AfterBuild">
<Exec Command="if exist $(TargetPath).locked del $(TargetPath).locked" />
</Target>
</Project>
위 예제는 하시는 프로젝트에 따라서 달라 질수가 있으니, 단지 참고만 하시기 바랍니다.
참고 : 위 문제가 생겼을 경우 빌드를 다시 하면 해결이 됩니다. 전 4~5번까지 빌드를 해본적이 있네요!!
작성자 : 상현넘™ [SHBLITZ.NET]

댓글을 달아 주세요
덕분에 짜증하나 해결했습니다. 고맙습니다.
해결을 하셨다니 다행입니다.
그래서 가끔 문제가 발생하긴 하더군요!!
그런데 2008 쓰면서는 한번도 발생은 하지 않았습니다!!
전 2008 쓰다가 발생했는데 ... 정말 고맙습니다
저도 2008 쓰면서 발생했는데.... 휴~ 정말 감사합니다. 어제 새벽만해도 되던게 안되서 정말 당황했거든요.
좋은 정보 감사합니다.