반응형
msbuild.exe가 열려 있고 파일을 잠그는 중
차례로 msbuild (.NET 4)를 호출하는 TeamCity를 사용합니다. 빌드가 완료된 후 (성공적인 빌드인지 여부는 중요하지 않은 것 같음) msbuild.exe가 열려 있고 파일 중 하나를 잠근다는 이상한 문제가 있습니다. 즉, TeamCity가 시도 할 때마다 작업 디렉토리를 지우면 실패하고 계속할 수 없습니다.
이것은 거의 매번 발생합니다 .
이 부분을 잃어 버렸기 때문에 가능한 한 자세한 정보를 제공하려고 노력할 것입니다.
- 서버는 Windows Server 2008 표준 64 비트 SP2가있는 Intel Core i7, 2GB ram입니다.
- TeamCity에서 msbuild 실행기는
/m
명령 줄 매개 변수 (다중 코어를 사용함을 의미)로 구성됩니다. - 문제의 파일은 항상 경로의 .NET 프로젝트 중 하나에서 참조되는 동일한 외부 DLL입니다
External Tools\Telerik\Telerik.Reporting.Dll
. (External Tools
이 문제를 일으키지 않는 유사한 경로 구조 의 dir에 포함 된 다른 여러 .DLL 파일 이 있습니다.) 현재 이것은 차이가있을 경우를 대비하여 Telerik 보고서의 평가판 버전입니다. - 문제가 발생하면
msbuild.exe *32
작업 관리자에 항상 여러 프로세스가 나열됩니다. 7이 있다고 생각합니다. Process Explorer를 사용하면 모두 최상위 프로세스 (부모 없음)처럼 보입니다. 그들은 모두 20-50MB 램과 0.0 % CPU를 사용하고 있습니다. - 1-3 분 정도 기다리면 msbuild.exe 프로세스가 자동으로 종료되고 TeamCity가 작업 디렉터리를 올바르게 업데이트 할 수 있습니다.
- msbuild 프로세스를 수동으로 종료하면 TeamCity의 업데이트가 즉시 다시 작동합니다.
- 인덱싱 서비스는 Windows에서 꺼져 있습니다 (앞의 두 지점에서 문제를 일으키는 msbuild.exe임을 거의 확인).
- Telerik.reporting.dll에는 특별한 속성이 없습니다. 유일한 SVN 속성은
svn:mime-type = application/octet-stream
전에이 문제를 겪은 사람이 있습니까?
msbuild
와 함께 사용하십시오 /nr:false
.
간단히 말해서 MSBuild는 특히 병렬 빌드에서 많은 작업을 빠르게 수행하려고합니다. 많은 "노드"-프로젝트를 컴파일 할 수있는 개별 msbuild.exe 프로세스를 생성합니다. 프로세스를 가동하는 데 약간의 시간이 걸리기 때문에 빌드가 완료된 후 이러한 프로세스가 중단됩니다 (기본적으로 15 분 동안). ), 따라서 곧 다시 빌드 할 경우 이러한 노드를 "재사용"하여 프로세스 설정 비용을 절약 할 수 있습니다. 그러나 앞서 언급 한 명령 줄 옵션으로 nodeReuse를 끄면 해당 동작을 비활성화 할 수 있습니다.
또한보십시오:
Visual Studio 내에서 노드 재사용을 비활성화하려면 환경 변수를 사용해야합니다.
MSBUILDDISABLENODEREUSE=1
참고 URL : https://stackoverflow.com/questions/3919892/msbuild-exe-staying-open-locking-files
반응형
'IT story' 카테고리의 다른 글
명령 플래그를 사용하여 향후 공유 라이브러리에 중단 점을 설정하는 방법 (0) | 2020.09.07 |
---|---|
어떻게 512M보다 더 많은 메모리를 Eclipse에 제공 할 수 있습니까? (0) | 2020.09.07 |
"템플릿은 필드 액세스, 속성 액세스, 단일 차원 배열 인덱스 또는 단일 매개 변수 사용자 지정 인덱서 식에만 사용할 수 있습니다."오류 (0) | 2020.09.07 |
g ++로 정적 라이브러리를 만드는 방법은 무엇입니까? (0) | 2020.09.07 |
Linux 기반 서버에서 ASP.Net 실행 (0) | 2020.09.06 |