Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 2개 있습니다.)

C# 6.0 이상의 소스 코드를 Visual Studio 설치 없이 명령행에서 컴파일하는 방법

.NET Framework이 설치된 시스템의 경우 다음과 같은 경로에서 csc.exe C# 컴파일러를 찾을 수 있습니다.

[32비트 운영체제의 csc.exe 위치]
32비트: C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe

[64비트 운영체제의 csc.exe 위치]
32비트: C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
64비트: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe

실행해 보면 알겠지만,

C:\temp>"C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe"
Microsoft (R) Visual C# Compiler version 4.7.2053.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.

This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to C# 5, which is no longer the latest version. For compilers that support newer versions of the C# programming language, see http://go.microsoft.com/fwlink/?LinkID=533240

warning CS2008: No source files specified
error CS1562: Outputs without source must have the /out option specified

.NET Framework과 함께 기본 제공되는 C# 컴파일러는 C# 5.0까지만 지원합니다. 즉, C# 6.0 이후의 문법을 사용한 소스 코드를,

using System;
using static System.Console; // C# 6.0의 using static 구문 사용

namespace ConsoleApplication1
{
    class Program
    {

        static void Main(string[] args)
        {
            WriteLine("Hello World");
        }
    }
}

빌드하면 이렇게 컴파일 오류가 발생합니다.

Program.cs(2,7): error CS1041: Identifier expected; 'static' is a keyword
Program.cs(2,14): error CS1518: Expected class, delegate, enum, interface, or struct

이 문제를 간단하게 해결하려면, Visual Studio 2017 Community 무료 버전을 설치하면 됩니다. 또는, C# 6.0 이상의 구문을 빌드할 수 있는 Rosyln C# 컴파일러를 직접 구해도 됩니다. 방법은 http://go.microsoft.com/fwlink/?LinkID=533240 링크에서 소개하고 있는 데로, 우선 Nuget 패키지 관리자(nuget.exe)를 다운로드해야 합니다.

Available NuGet Distribution Versions
; https://dist.nuget.org/index.html

nuget.exe (v6.2.1)
; https://dist.nuget.org/win-x86-commandline/v6.2.1/nuget.exe

설치할 필요 없이 nuget.exe 단일 파일로 제공되기 때문에 c:\temp와 같은 폴더에 내려받으면 됩니다.

이후, 명령행에서 다음과 같이 실행해 주면 해당 폴더 하위에 최신 버전의 C# 컴파일러가 구성됩니다.

C:\temp> nuget install Microsoft.Net.Compilers

가령, 현재(2022-07-25) 날짜 기준으로 최신 컴파일러 버전이 "4.2.0"이므로 다음과 같은 폴더가 생성되었습니다.

C:\temp\Microsoft.Net.Compilers.4.2.0

그리고 위의 폴더 하위에는 "build", "tools"가 있고 우리가 원하는 C# 컴파일러는 "tools"에 csc.exe로 포함되어 있습니다. 따라서, C# 6.0 이상의 구문을 포함하는 소스 코드를 컴파일하고 싶다면 다음과 같이 실행하시면 됩니다.

C:\temp> .\Microsoft.Net.Compilers.4.2.0\tools\csc.exe program.cs
Microsoft (R) Visual C# Compiler version 4.2.0-4.22262.19 (46c8f4f5)
Copyright (C) Microsoft Corporation. All rights reserved.

C:\temp> program
Hello World




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 7/25/2022]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 181  182  [183]  184  185  186  187  188  189  190  191  192  193  194  195  ...
NoWriterDateCnt.TitleFile(s)
393정성태11/8/200619513오류 유형: 17. Unable to start debugging - The binding handle is invalid.
371정성태10/23/200618653오류 유형: 16. STS Communication failed.
370정성태11/12/200622583.NET Framework: 75. Windows CardSpace 이야기 (이 글의 내용은 재작성되어질 예정입니다.)
375정성태10/25/200624526    답변글 .NET Framework: 75.1. 개인 발행 카드에 대한 Microsoft 예제 실습(이 글의 내용은 재작성되어질 예정입니다.)
376정성태10/27/200624190    답변글 .NET Framework: 75.2. "Windows CardSpace"와 "인증서 서비스"의 만남(이 글의 내용은 재작성되어질 예정입니다.)
377정성태10/26/200623832    답변글 .NET Framework: 75.3. Managed Card 발행에 대한 Microsoft 예제 실습 (1) - CardWriter (이 글의 내용은 재작성되어질 예정입니다.)
385정성태11/6/200626437    답변글 .NET Framework: 75.4. Managed Card 발행에 대한 Microsoft 예제 실습 (2) - STS 구현 (이 글의 내용은 재작성되어질 예정입니다.) [7]
387정성태11/2/200627196    답변글 .NET Framework: 75.5. Windows CardSpace와 SYSNET 사이트의 만남 (이 글의 내용은 재작성되어질 예정입니다.) [1]
397정성태11/11/200624762    답변글 .NET Framework: 75.6. CardWriter.csproj와 함께 알아보는 인증서 식별 방법(이 글의 내용은 재작성되어질 예정입니다.)
398정성태11/12/200623265    답변글 .NET Framework: 75.7. 카드에 암호 거는 방법(이 글의 내용은 재작성되어질 예정입니다.)
399정성태11/12/200625504    답변글 .NET Framework: 75.8. 인증서/스마트 카드에 기반한 Managed Card - STS 구현(이 글의 내용은 재작성되어질 예정입니다.) [5]
369정성태10/22/200620970오류 유형: 15. 자동 업데이트 실패
367정성태10/22/200636761Windows: 3. IIS 7.0 다중 바인딩 설정하는 방법 [1]
365정성태10/21/200620475Windows: 2. 서버(build 5600)에 IIS 7.0 서비스와 .NET 3.0 설치 방법
359정성태10/17/200616654오류 유형: 14. VS.NET 빌드 오류 - FxCopCmd.exe returned error code 65.
358정성태10/17/200621841오류 유형: 13. WSE 3.0 서비스 관련 WSE101 오류 / Destination Unreachable
357정성태12/1/200624093.NET Framework: 74. WCF 이야기 [4]
378정성태10/28/200628861    답변글 .NET Framework: 74.1. WCF와 WSE 3.0의 활용 [4]파일 다운로드1
379정성태11/3/200627809    답변글 .NET Framework: 74.2. WCF로 구현하는 .NET Remoting [4]파일 다운로드1
380정성태10/28/200626709    답변글 .NET Framework: 74.3. 웹 서비스와 닷넷 리모팅으로써의 WCF 구현파일 다운로드1
381정성태10/28/200629153    답변글 .NET Framework: 74.4. WCF 서비스 참조 추가 메뉴 [2]
382정성태10/28/200635220    답변글 .NET Framework: 74.5. WCF 서비스를 IIS에서 호스팅하는 방법파일 다운로드1
383정성태10/28/200629965    답변글 .NET Framework: 74.6. IIS 6.0: 다중 Endpoint 제공파일 다운로드1
384정성태10/28/200626894    답변글 .NET Framework: 74.7. IIS 7.0: 다중 Endpoint 제공
389정성태11/11/200629688    답변글 .NET Framework: 74.8. WCF에 SSL 적용 (1) - Httpcfg.exe 도구를 이용한 SSL 설정
390정성태11/6/200626852    답변글 .NET Framework: 74.9. WCF에 SSL 적용 (2) - 서비스 제작파일 다운로드1
... 181  182  [183]  184  185  186  187  188  189  190  191  192  193  194  195  ...