정적 CA는 솔루션 빌드 mutch를 느리게 만듭니다. 내 경우에는 CA가없는 것보다 2 배 이상 느립니다. 우리는 그것을 막을 수는 있지만 그 힘을 잃는 것은 나쁜 결정입니다. 그래서 우리는 무엇을 할 수 있습니까?코드 분석 향상
먼저 CA의 작동 방식을 확인하십시오.
솔루션을 빌드하십시오. msbuild 후 각 프로젝트 빌드 컴파일 대상 fxcopcmd.exe는 분석해야하는 어셈블리에 대한 경로와 함께 호출됩니다. fxcopcmd. VS (또는 아마도 출력 스트림)에 의해 사용되는 CA xml 로그를 생성합니다. fxcopcmd.exe는 (빠른) 어셈블리를로드하고 동 기적으로 분석하므로 하나의 CPU 만로드되고 3 개 (제 경우)는 아무 작업도 수행하지 않습니다. CA가 완료된 후에 만 프로젝트 종속성 체인의 다음 프로젝트가 빌드됩니다.
CA의 취약점으로 인해 모든 CPU를 병렬로 작동하도록 개선 할 수있었습니다.
내가 같은 솔루션을 참조
, MSBUILD에서 매개 변수를 기억하고 즉시 CA의 xml.log을 통해 (모두 확인하고 오류가 없었다 msbuild를보고 할 것이다 가짜 fxcopcmd.exe를 만들려면, 또는 성공한 파일, 아니면 스트림 ..). 따라서 MSBUILD는 다음 프로젝트를 빌드하고 그 시간에 저장된 매개 변수로 실제 fxcopcmd.exe를 호출합니다 ... MSBUILD가 다음 프로젝트에서 fxcopcmd.exe를 호출하면 - fxcopcmd.exe를 한 번 더 호출합니다. 모든 CPU를로드 할 프로세스는 거의 없습니다. 실제 fxcopcmd.exe가 끝나면 MSBUILD 대상을 호출 할 수 있습니다. MSBUILD 대상은 microsoft.common.targtets에서 CA 대상 만 호출하고 컴파일은하지 않으며 가짜 fxcopcmd.exe는 즉시 결과를보고합니다 (CA는 그 시점에 완료되고 로그가 있습니다) MSBUILD-VS.
당신은 어떻게 생각하십니까? 이 속도가 CA가 될까요? 왜 Microsoft는 그러한 직원을 만들지 않고 CA에서 하나의 CPU 만 사용 했습니까?
왜 다른 빌드 구성을 만들고 그 설정 만 활성화합니까? 그런 다음 빌드 할시기를 선택할 수 있습니다. –