2014-11-11 9 views
9

라이브러리 Microsoft.Bcl.Build.Tasks.dll이 일부 프로세스에서 계속 사용되고있어 삭제할 수 없기 때문에 빌드 에이전트가 작업 디렉토리를 지울 수없는 내 ASP.NET Web-Api 솔루션에 문제가 있습니다. 빌드 에이전트에서 수행하는 유일한 작업은 표준 MSBuild.exe를 사용하여 솔루션을 작성한 다음 MSTest.exe를 사용하여 몇 가지 단위 테스트를 실행하는 것입니다.Microsoft.Bcl.Build.Tasks.dll을 (를) 제거하지 못했습니다.

Microsoft.Bcl.Build 버전 1.0.14 (사용하는 버전)는 Microsoft.Net.HttpMicrosoft.Bcl libraries에 의해 종속성으로 나열됩니다.

에이전트에 내 워크 플로우는 다음과 같이이다 : 얼마 후

  • 복제 에이전트
  • 에 자식의 repo는
  • MSTEST 사용은 MSBuild에게
  • 테스트 솔루션을 사용하여 솔루션을 구축, 어쩌면 10 분, 현재 반복을 시도하고 정리합니다.
  • 설명 된 오류로 인해 파일 정리가 실패합니다.

내 질문은 다음과 같습니다.

몇 분 후에도 일부 프로세스에서이 라이브러리를 사용하는 이유는 누구에게 알 수 있습니까? 백그라운드에서이 라이브러리를 사용하는 일반적인 프로세스가 있습니까? 나는이 파일이 사용되는 이유를 발견하기 위해 프로세스 관리자를 사용할 것이지만이 빌드 머신은 생산 박스로 간주되며 관리자 액세스 권한을 얻는 것이 거의 불가능합니다.

미리 도움을 청하십시오!

+1

핸들이나 LockHunter로 치려고 했습니까? MSBuild에'/ nr : false'를 전달하려고 했습니까? –

답변

2

솔루션에 사용자 지정 msbuild 대상이 포함되어 있고 동일한 솔루션의 다른 csproj에서 동일한 msbuild 대상을 사용중인 경우 컴파일시 충돌이 발생합니다. 효과적으로, 당신은 컴파일 과정 중반 컴파일의 일부를 컴파일하려고 시도하고 당신은 이러한 유형의 파일 잠금 오류를 실행할 것입니다. 이 문제를 해결하려면 사용자 정의 msbuild 대상 프로젝트를 별도의 솔루션으로 분할하고 필요에 따라 빌드하십시오. &을 언로드해야 할 때 언제든지 다시 빌드 할 때마다 msbuild 대상에 의존하는 프로젝트를 다시로드해야한다고 생각합니다. 한두 번 VS를 다시 시작해야했습니다.

사용자 지정 msbuild 작업을 추가하지 않은 경우 설치된 NuGet 패키지를보고 문제의 원인을 파악할 수 있습니다. 솔루션에서 마우스 오른쪽 버튼을 클릭하고 'Manage NuGet Packages'를 클릭하십시오. 설치된 패키지 목록에서 Microsoft.Bcl.Build을 제거하십시오. 무언가에 의존하기 때문에 실패해야합니다. 어떤 패키지가 그것에 의존하는지 기록하십시오. 첫 번째 제안이 도움이되지 않는다면, 패키지가 그것에 의존하는 의견을 게시하십시오. 그리고 내가 전에 보았던 곳을 파헤 치고 기억할 수 있는지 알게 될 것입니다.

이 질문은 자세한 내용을 Microsoft.Bcl.Build이 무엇을 당신이 관심이 있다면 사용 기능에 대한 & 링크가 있습니다 What does the Microsoft.Bcl.Build NuGet package do?

+0

당신의 대답은 컴파일 타임에 일어날 경우 문제를 해결하는 것 같다 ... 그러나 내 솔루션은 컴파일 시간에 문제가 없습니다. 얼마 후. 솔루션을 올바르게 컴파일 할 수 있지만 나중에 대상 잠금 문제가 있음을 말하고 있습니까? – tezromania

+0

저는 개인적으로 VS 프로세스가 종료 될 때까지 빌드 프로세스에 관련된 DLL에 대한 잠금을 유지하는 것을 보았습니다 (예상대로 빌드의 수명을 넘어). 그러나 빌드 에이전트에서이를 기대하지는 않습니다. 이 속성을 추가하면 도움이되는지 확인하십시오. http://stackoverflow.com/a/22825192/179223 작동하는 경우 csproj 파일을 조작하는 대신 명령 줄 인수를 통해 속성을 조건부로 추가 할 수 있습니다. – scottt732

4

먼저 LockHunter 같은 프로그램을 통해 프로세스에서 어떤 용도로 삭제를 다음 VS를 다시 시작 . 그것은 나를 위해 일했습니다

+1

Process Explorer의 찾기 옵션을 같은 목적으로 사용했지만 LockHunter가 훨씬 더 실용적입니다. 그것을 지적 주셔서 감사합니다. –

1

모든 빌드 세트 전에 git fetch 않는 내 gitlab 빌드 서버에서 동일한 문제가 발생했습니다.

내 프로젝트에 nuget에서 Microsoft.Bcy.Async를 추가 한 후, 빌드 후 단계는 내가 여러 MSBuild.exe를 작업을 확인 LockHunter으로 warning: failed to remove packages/Microsoft.Bcl.Build.1.0.14/tools/Microsoft.Bcl.Build.Tasks.dll

실패했습니다. 내가 지금 여기에 해결책을 발견 정보와

: https://stackoverflow.com/a/12193759/98491

길고도 짧은 이야기 다음은 MSBuild 프로세스를 구축하는 동안 성능을 향상 열려 유지됩니다. 환경 변수 MSBUILDDISABLENODEREUSE = 1을 설정하거나 /nodeReuse:false을 msbuild 자체에 전달하여 비활성화 할 수 있습니다.

저를 위해 고쳤습니다.

관련 문제