이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 55049|회답: 0

[출처] Roslyn MSBuild 컴파일러의 차이점

[링크 복사]
게시됨 2021. 3. 21. 오전 11:55:39 | | | |
MSBuild: Microsoft Build Engine은 애플리케이션을 구축하는 플랫폼입니다. 이 엔진은 MSBuild라고도 불리며, 빌드 플랫폼이 소프트웨어를 처리하고 빌드하는 방식을 제어하는 프로젝트 파일에 대한 XML 스키마를 제공합니다. Visual Studio는 MSBuild를 사용하지만, MSBuild는 Visual Studio에 의존하지 않습니다. 프로젝트나 솔루션 파일에서 msbuild.exe를 호출하면 Visual Studio가 설치되지 않은 환경에서 제품을 예약하고 빌드할 수 있습니다.

소개하다:하이퍼링크 로그인이 보입니다.

바라발라는 이름에서 알 수 있듯이, 그는 마이크로소프트의 컴파일러로, 프로젝트를 실행 가능한 프로그램으로 프로그래밍하는 역할을 합니다.

이전에 사용했던 방법은, txt 노트패드로 코드를 수정한 후 msbuild로 다시 컴파일한 방법입니다:

집에서 노트북에서 10년간 .NET 프로그램을 디버깅하기
https://www.itsvse.com/thread-9419-1-1.html

로슬린마이크로소프트 코퍼레이션의 오픈소스 .NET 컴파일러입니다. 컴파일러는 C# 및 Visual Basic 코드 컴파일을 지원하며 풍부한 코드 분석 API를 제공합니다.
우리는 새로운 것을 만들려고 노력합니다.NET 프레임워크 4.6VS 2019를 사용하는 프로젝트는 아래 이미지와 같이 MSBuild 프로젝트 출력 세부 정보 생성 설정을 정상적으로 생성합니다:



아래에 표시된 대로 아이템을 우클릭하여 재생을 시도하세요:



1>------ 모든 재구성이 시작되었습니다: Project: ConsoleApp1, Configuration: Debug Any CPU ------
1> 시작 시간은 2021/3/21 11:38:08입니다.
1>생성 바인딩:
1> ResolveAssemblyReferences에는 제안된 바인딩 리디렉션이 없습니다.
1>생성목표프레임워크모니커속성:
1>은 모든 출력 파일이 입력 파일에 비해 최신 상태이기 때문에 타겟 "GenerateTargetFrameworkMonikerAttribute"를 건너뛰고 있습니다.
1>코어컴파일:
1> C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn\csc.exe /noconfig /nowarn:1701,1702,2008 /fullpaths /nostdlib+ /platform: anycpu32bitpreferred /errorreport:prompt /warn:4 /define:DEBUG; TRACE /errorendlocation /preferreduilang:zh-CN /highentropyva+ /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\Microsoft.CSharp.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\mscorlib.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Data.DataSetExtensions.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Data.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Net.Http.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Xml.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\ConsoleApp1.exe /subsystemversion:6.00 /target:exe /utf8output / deterministic+ /langversion:7.3 Program.cs Properties\AssemblyInfo.cs "obj\Debug\. NETFramework,Version=v4.6.AssemblyAttributes.cs"
1> 컴파일러를 위해 뒤 열 디렉터리에서 공유 컴파일 사용: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn
1>_CopyAppConfigFile:
1> "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\App.config"에서 "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\로 파일 복사 ConsoleApp1.exe.config".
1>CopyFilesToOutputDirectory:
1> "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.exe"에서 "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\"로 파일을 복사하기 ConsoleApp1.exe".
1> ConsoleApp1 -> C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ConsoleApp1.exe
1> "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.pdb"에서 "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\"로 파일을 복사합니다. ConsoleApp1.pdb".
1>
1>가 성공적으로 생성되었습니다.
1> 0 경고
1> 0 오류
1>
1> 경과 시간 00:00:00.66
========== 모두 재생: 1개 성공, 0개 실패, 0개 건너뛸 ==========

참고용으로 인터넷의 다른 기사에서 다운로드한 내용입니다:


.NET Framework 4.0에 내장된 MSBuild는 C# 6.0 문법 기능을 인식하지 못합니다.

"MSBuild" => msbuild.exe, "Roslyn" => csc.exe

MSbuild는 Visual Studio의 빌드 시스템입니다. 이 프로그램은 C# 컴파일러를 호출하여 C# 프로젝트를 컴파일합니다. Roslyn은 C# 컴파일러(및 VB 컴파일러)입니다. 따라서 msbuild는 Roslyn을 사용합니다.

하지만 Roslyn은 단순한 컴파일러 이상의 기능을 포함하고 있습니다. 또한 완성 목록, 색상, 코드 수정 등 IDE 기능을 제공하는 VS 플러그인도 포함되어 있습니다.

또한 Roslyn은 소스 코드를 분석하는 API로, 여러분이 자신의 애플리케이션에서 사용할 수 있습니다. 마지막 경우에는 MSBuildWorkspace라는 API가 있는데, 이를 통해 프로젝트나 솔루션을 열어 분석할 수 있습니다. 이 작업 공간은 MSBuild를 사용하여 프로젝트와 솔루션의 모든 부분을 파악합니다. 따라서 이 로슬린 구역은 MSBuild를 사용합니다.


요약:

제가 알기로는 MSBuild는 마이크로소프트 컴파일러들의 집합체이며, 그가 생성 파일을 직접 담당하지는 않지만, Roslyn을 호출해 C# 코드를 컴파일하는 데 도움을 줄 것입니다. 또한 다른 언어로 코드를 컴파일한 뒤 해당 컴파일러를 호출할 수 있습니다.

C# 프로젝트 컴파일에서는 MSBuild가 의사결정자이고 Roslyn이 집행자입니다.





이전의:ASP.NET 코어(VI) DI는 객체 주입 방식을 수동으로 획득합니다
다음:.NET/C# Emit은 동적으로 어셈블리를 생성합니다
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com