Skip to main content

Enterprise Server 3.15 은(는) 현재 릴리스 후보로 제공됩니다.

C# 컴파일러가 예기치 않게 실패

MSBuild C# 컴파일이 예기치 않게 실패하는 경우 애플리케이션 프로젝트 파일을 수정해야 할 수 있습니다.

이 오류 정보

CodeQL 추적기는 C# 컴파일러 호출에 일부 플래그를 삽입하여 모든 구성요소가 빌드되고 CodeQL 데이터베이스에 포함되도록 하는데, 이로 인해 분석 중에 C# 코드가 예상과 다르게 빌드될 수 있습니다. "컴파일된 언어에 대한 CodeQL 코드 검사하기" 항목을 참조하세요.

/p:EmitCompilerGeneratedFiles=true은(는) 삽입된 속성 중 하나이며 빌드 프로세스 중에 컴파일러에서 생성된 파일을 내보냅니다. 이 옵션을 선택하면 컴파일러가 향상된 정규식 지원, 직렬화 및 웹 애플리케이션 뷰 생성 등의 기능을 지원하는 데 사용되는 추가 파일을 생성합니다. 이렇게 생성된 아티팩트는 일반적으로 컴파일러에 의해 디스크에 쓰이지 않지만, 옵션을 true(으)로 설정하면 파일을 디스크에 강제로 쓰게 되어 추출기가 파일을 처리할 수 있습니다.

일부 레거시 프로젝트와 .sqlproj 파일을 사용하는 프로젝트의 경우, 삽입된 /p:EmitCompilerGeneratedFiles=true 속성으로 인해 msbuild에서 예기치 않은 문제가 발생하는 것을 볼 수 있습니다.

문제의 원인 확인

"경고를 오류로 처리" 플래그를 설정한 경우 msbuild이(가) 오류를 생성하여 추출이 실패하게 됩니다.

문제 해결

애플리케이션의 프로젝트 파일에 <CompilerGeneratedFilesOutputPath> 요소를 추가해야 합니다. 자세한 내용은 Microsoft Learn의 "프로젝트 파일 이해"를 참조하세요.