Windows 서비스를 C# .net으로 빌드합니다. Pre-Build 및 Post-Build 이벤트를 추가하여 빌드에 자동으로 서비스를 배포했습니다. 그러나 언젠가 나는이 오류가있어 :서비스를 구축 할 수 없습니다. 다른 프로세스에서 파일을 사용하고 있기 때문에 파일을 복사 할 수 없습니다.
파일을 복사 할 수 없습니다를 "[CompletPath ...] \ 빈 \ 디버그 \ Business.Data.dll" "디버그 \ Business.Data.dll \ 빈" 합니다. 프로세스가 다른 프로세스에서 사용 중이기 때문에 'bin \ Debug \ Business.Data.dll'파일에 액세스 할 수 없습니다.
Pre-Build 이벤트에서 서비스를 닫고 Debug 디렉터리의 파일을 사용하는 모든 작업을 종료하고 서비스를 제거합니다. 내가 빌드 전 이벤트에서 실행있어 박쥐의 코드가있다 : 내가 설치하고 서비스를 시작하고 빌드 후 이벤트에
SET executionPath=%~dp0
SET serviceName=%1
SET frameworkPath=%2
SET targetServicePath=%3
SET targetBinPath=%~4
set targetBinPath=%targetBinPath:~0,-2%
net stop %serviceName%
powershell -NonInteractive -executionpolicy Unrestricted -file "%executionPath%\unlockfiles.ps1" "%targetBinPath%"
%frameworkPath%\installutil.exe /u %targetServicePath%
Exit /b 0
이 코드는이 경우에도이 포스트 빌드 이벤트가 실행되지 않기 때문에 빌드에서 오류가 발생하기 때문에 문제가 아닙니다.
SET serviceName=%1
SET frameworkPath=%2
SET targetServicePath=%3
%frameworkPath%\installutil.exe /ShowCallStack %targetServicePath%
net start %serviceName%
항상 문제가있는 것은 아닙니다. 나는 보통 내가 처음으로 건물에 문제가 생겼고, 나는 해결책을 세우고 다시 짓고 대개는 이것으로 일하고있다.
어떤 소프트웨어를 사용하여 파일을 잠그고 있는지 알아 보셨습니까? Visual Studio 또는 서비스입니까? 그렇지 않다면 다음을 사용하십시오 : http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx – Niclas
handle.exe를 사용하여 폴더의 파일을 사용하는 모든 프로세스를 종료합니다. – forumma