Skip to main content

C# ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ์‹คํŒจ

MSBuild C# ์ปดํŒŒ์ผ์ด ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์˜ค๋ฅ˜ ์ •๋ณด

CodeQL ์ถ”์ ๊ธฐ๋Š” C# ์ปดํŒŒ์ผ๋Ÿฌ ํ˜ธ์ถœ์— ์ผ๋ถ€ ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฝ์ž…ํ•˜์—ฌ ๋ชจ๋“  ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ๋นŒ๋“œ๋˜๊ณ  CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํฌํ•จ๋˜๋„๋ก ํ•˜๋Š”๋ฐ, ์ด๋กœ ์ธํ•ด ๋ถ„์„ ์ค‘์— C# ์ฝ”๋“œ๊ฐ€ ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋นŒ๋“œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋œ ์–ธ์–ด์— ๋Œ€ํ•œ CodeQL ์ฝ”๋“œ ๊ฒ€์‚ฌํ•˜๊ธฐ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

/p:EmitCompilerGeneratedFiles=true์€(๋Š”) ์‚ฝ์ž…๋œ ์†์„ฑ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ์ค‘์— ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์ƒ์„ฑ๋œ ํŒŒ์ผ์„ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ์„ ํƒํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ–ฅ์ƒ๋œ ์ •๊ทœ์‹ ์ง€์›, ์ง๋ ฌํ™” ๋ฐ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ทฐ ์ƒ์„ฑ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ถ”๊ฐ€ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ ์•„ํ‹ฐํŒฉํŠธ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ๋””์Šคํฌ์— ์“ฐ์ด์ง€ ์•Š์ง€๋งŒ, ์˜ต์…˜์„ true(์œผ)๋กœ ์„ค์ •ํ•˜๋ฉด ํŒŒ์ผ์„ ๋””์Šคํฌ์— ๊ฐ•์ œ๋กœ ์“ฐ๊ฒŒ ๋˜์–ด ์ถ”์ถœ๊ธฐ๊ฐ€ ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ๋ ˆ๊ฑฐ์‹œ ํ”„๋กœ์ ํŠธ์™€ .sqlproj ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ, ์‚ฝ์ž…๋œ /p:EmitCompilerGeneratedFiles=true ์†์„ฑ์œผ๋กœ ์ธํ•ด msbuild์—์„œ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ์˜ ์›์ธ ํ™•์ธ

"๊ฒฝ๊ณ ๋ฅผ ์˜ค๋ฅ˜๋กœ ์ฒ˜๋ฆฌ" ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•œ ๊ฒฝ์šฐ msbuild์ด(๊ฐ€) ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ถ”์ถœ์ด ์‹คํŒจํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์— <CompilerGeneratedFilesOutputPath> ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Microsoft Learn์˜ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ์ดํ•ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.