달력

022012  이전 다음

  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  •  
  •  
  •  
Visual Studio 2005 SP1에 보면 [AP.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]
Posted by 상현넘™

댓글을 달아 주세요

  1. 쏘야  댓글주소 수정/삭제 댓글쓰기 2008/05/21 17:27

    덕분에 짜증하나 해결했습니다. 고맙습니다.

    • 상현넘™  댓글주소 수정/삭제 2008/05/23 00:19

      해결을 하셨다니 다행입니다.
      그래서 가끔 문제가 발생하긴 하더군요!!
      그런데 2008 쓰면서는 한번도 발생은 하지 않았습니다!!

  2. 배재영  댓글주소 수정/삭제 댓글쓰기 2008/08/27 16:43

    전 2008 쓰다가 발생했는데 ... 정말 고맙습니다

  3. 김한얼  댓글주소 수정/삭제 댓글쓰기 2010/04/14 09:39

    저도 2008 쓰면서 발생했는데.... 휴~ 정말 감사합니다. 어제 새벽만해도 되던게 안되서 정말 당황했거든요.

  4. 초보자  댓글주소 수정/삭제 댓글쓰기 2010/11/24 11:45

    좋은 정보 감사합니다.