유니티 에디터와 Visual Studio가 열린 상태에서 스크립트가 컴파일 될 때 아래와 같은 에러 발생
Copying assembly from ‘Temp/Assembly-CSharp-firstpass.dll’ to ‘Library/ScriptAssemblies/Assembly-CSharp-firstpass.dll’ failed. Detailed error: Sharing violation on path
분석
Assembly-CSharp-firstpass.dll은 무엇인가.
Assembly-CSharp-firstpass.dll은 컴파일 순서에 따라 첫번째로 컴파일 된 결과물이다. Standard Assets과 Plugins에 포함된 스크립트들이 대상이고 첫번째 Phase이기 때문에 firstpass라는 네이밍이 붙는다.
Sharing violation on path는 어떤 의미인가.
파일 IO 스트림이 열려 있거나 파일이 다른 프로세스로부터 사용 중이란 의미이다. 사용 중이기 때문에 복사하거나 복사 되지 못하는 경우라고 볼 수 있다.
해결
유니티 이외의 다른 프로세스가 Library 폴더 내에 dll을 사용하는 경우는 어떤 경우일지 모르겠지만, 커뮤니티를 검색하다 보니 Kaspersky 및 Windows Defender에 관한 것이 있었다. 그래서 해당 폴더(Library)를 ‘Microsoft Defender > 바이러스 및 위협 방지 설정’에서 제외 시켜 보았더니 더 이상 에러가 발생하지 않았다. 다만, Unity 2017을 사용할 때는 일어나지 않았던 일이어서 2020 버전으로 변경하면서 생긴 것인지 혹은 다른 환경 변화로 인한 것인지는 확실히 알 수 없다.