Microsoft MVP성태의 닷넷 이야기
.NET Framework: 507. CoreFx 빌드하는 방법 [링크 복사], [링크+제목 복사],
조회: 24634
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

CoreFx 빌드하는 방법

지난 글에서 CoreCLR에 대한 빌드 방법을 소개했고,

.NETCore = CoreFX + CoreCLR
; https://www.sysnet.pe.kr/2/0/2884

기존에 Xamrin이 설치된 경우 빌드 실패가 발생하는 현상도 설명했습니다.

CoreFx, CoreCLR 빌드 시 "error CS0518: Predefined type 'System.Object' is not defined or imported" 오류 해결 방법
; https://www.sysnet.pe.kr/2/0/2886

이제 CoreFX를 빌드해 볼까요? CoreFX는 .NET Framework로 치면 mscorlib.dll을 제외한 다른 클래스 라이브러리를 포함하고 있는 모듈들입니다. 역시 소스코드가 공개되었으니 아래의 github에서 .zip 파일로 다운로드 받거나,

dotnet/corefx 
; https://github.com/dotnet/corefx

아니면 git clone 명령어로 내려받으시면 됩니다.

E:\corefx>"C:\Program Files (x86)\Git\bin\git" clone https://github.com/dotnet/corefx.git .
Cloning into '.'...
remote: Counting objects: 2689, done.
remote: Total 2689 (delta 0), reused 0 (delta 0), pack-reused 2689
Receiving objects: 100% (2689/2689), 2.18 MiB | 564.00 KiB/s, done.
Resolving deltas: 100% (1480/1480), done.
Checking connectivity... done.
Checking out files: 100% (736/736), done.

보다시피, 저는 E:\corefx 폴더에 압축을 풀었습니다. 빌드는 다음의 문서에 따라 환경 구성하고 빌드합니다.

Developer Guide
; https://github.com/dotnet/corefx/wiki/Developer-Guide

근데, 사실 할 것이 없습니다. ^^ CoreClr은 cmake, DIA SDK가 필요했지만 CoreFX는 Visual Studio만 필요하기 때문입니다. 그래서 다운로드 받은 위치에 있는 build.cmd만 실행해 주시면 됩니다.

E:\corefx>build.cmd
  Restoring build tools...
  System.Collections.Immutable -> E:\corefx\bin\Windows_NT.AnyCPU.Debug\System.Collections.Immutable\System.Collections.Immutable.dll
  Microsoft.Win32.Primitives -> E:\corefx\bin\Windows_NT.AnyCPU.Debug\Microsoft.Win32.Primitives\Microsoft.Win32.Primitives.dll
  System.Collections.NonGeneric -> E:\corefx\bin\Windows_NT.AnyCPU.Debug\System.Collections.NonGeneric\System.Collections.NonGeneric.dll
  System.Collections.Concurrent -> E:\corefx\bin\Windows_NT.AnyCPU.Debug\System.Collections.Concurrent\System.Collections.Concurrent.dll
  System.ComponentModel.EventBasedAsync -> E:\corefx\bin\Windows_NT.AnyCPU.Debug\System.ComponentModel.EventBasedAsync\System.ComponentModel.EventBasedAsync  .dll

...[생략]...

  Discovering: Axes.Tests
  Discovered:  Axes.Tests
  Starting:    Axes.Tests
  Finished:    Axes.Tests

  === TEST EXECUTION SUMMARY ===
     Axes.Tests  Total: 35, Errors: 0, Failed: 0, Skipped: 0, Time: 0.148s

    2 Warning(s)
    2 Error(s)
Time Elapsed 00:01:40.66
Build Exit Code = 1

중간에 있는 2개의 실패는, Microsoft.Win32.Registry.Tests 등의 테스트에서 실패한 것인데... 그냥 넘어가겠습니다. ^^

한가지 좀 귀찮은 것이 있다면 프로젝트 별로 각각의 폴더에 복사되기 때문에 여러 개의 DLL을 참조하려면 꽤나 귀찮은 작업이 필요하게 됩니다. 일단은 임시로 다음과 같은 PowerShell 스크립트를 실행해 주시면 e:\corefx\debug 폴더에 모이게 할 수 있습니다.

cls

$basePath = "E:\corefx\bin\Windows_NT.AnyCPU.Debug"
$targetPath = "E:\corefx\debug"

$files = Get-ChildItem -Name -Path $basePath  -Recurse -File -Filter System.*.dll -Exclude *.Tests.dll | sort Name


ForEach ($file in $files)
{
    if ($file.IndexOf(".Tests\") -eq -1)
    {
        $filePath = $basePath + "\" + $file
        Copy-Item $filePath -Destination $targetPath

        $filePath

        $pdbPath = [System.IO.Path]::ChangeExtension($filePath, ".pdb")
        if ([System.IO.File]::Exists($pdbPath))
        {
            Copy-Item $pdbPath -Destination $targetPath
        }
    }
}




제가 2대의 컴퓨터에서 빌드해봤는데, 하나는 아무런 오류없이 잘 되었지만 한 대의 PC에서는 다음과 같이 xunit.runners 패키지 처리 단계에서 오류가 발생했습니다.

E:\corefx>build.cmd
  Unable to resolve dependency 'xunit.runners (≥ 2.0.0-beta4-build2738)'.
E:\corefx\build.proj(80,5): error MSB3073: The command ""E:\corefx\bin\tools\NuGet.exe" install Microsoft.DotNet.BuildTools -Prerelease -Version 1.0.13-prerelease -o " E:\corefx\src\packages\ " -ConfigFile "E:\corefx\src\nuget\NuGet.Config"" exited with code 1.

검색해 보면 이것을 수작업으로 처리했다고 나옵니다.

build.cmd can fail to install xunit.runners package? #130
; https://github.com/dotnet/corefx/issues/130

그래서 다음과 같이 한번 실행해 주면 해결됩니다.

E:\corefx>"E:\corefx\bin\tools\NuGet.exe" install xunit.runners -Prerelease -Version 2.0.0-beta4-build2738 -o " E:\corefx\src\packages\ " -ConfigFile "E:\corefx\src\nuget\NuGet.Config"
 Installing 'xunit.runners 2.0.0-beta4-build2738'.
 Successfully installed 'xunit.runners 2.0.0-beta4-build2738'.




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







[최초 등록일: ]
[최종 수정일: 3/13/2015]

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

비밀번호

댓글 작성자
 




... 91  92  93  94  95  96  97  [98]  99  100  101  102  103  104  105  ...
NoWriterDateCnt.TitleFile(s)
11574정성태7/2/201822925Math: 27. GeoGebra 기하 (4) - 선분을 n 배 늘이는 방법파일 다운로드1
11573정성태7/2/201820613Math: 26. GeoGebra 기하 (3) - 평행선
11572정성태7/1/201819904.NET Framework: 783. C# 컴파일러가 허용하지 않는 (유효한) 코드를 컴파일해 테스트하는 방법
11571정성태7/1/201821254.NET Framework: 782. C# - JIRA에 등록된 Project의 Version 항목 추가하는 방법파일 다운로드1
11570정성태7/1/201822706Math: 25. GeoGebra 기하 (2) - 임의의 선분과 특정 점을 지나는 수직선파일 다운로드1
11569정성태7/1/201820650Math: 24. GeoGebra 기하 (1) - 수직 이등분선파일 다운로드1
11568정성태7/1/201833241Math: 23. GeoGebra 기하 - 컴퍼스와 자를 이용한 작도 프로그램 [1]
11567정성태6/28/201823365.NET Framework: 781. C# - OpenCvSharp 사용 시 포인터를 이용한 속도 향상파일 다운로드1
11566정성태6/28/201828635.NET Framework: 780. C# - JIRA REST API 사용 정리 (1) Basic 인증 [4]파일 다운로드1
11565정성태6/28/201826443.NET Framework: 779. C# 7.3에서 enum을 boxing 없이 int로 변환하기 - 세 번째 이야기파일 다운로드1
11564정성태6/27/201824914.NET Framework: 778. (Unity가 사용하는) 모노 런타임의 __makeref 오류
11563정성태6/27/201821586개발 환경 구성: 386. .NET Framework Native compiler 프리뷰 버전 사용법 [2]
11562정성태6/26/201821283개발 환경 구성: 385. 레지스트리에 등록된 원격지 스크립트 COM 객체 실행 방법
11561정성태6/26/201834451.NET Framework: 777. UI 요소의 접근은 반드시 그 UI를 만든 스레드에서! [8]파일 다운로드1
11560정성태6/25/201825886.NET Framework: 776. C# 7.3 - 초기화 식에서 변수 사용 가능(expression variables in initializers)파일 다운로드1
11559정성태6/25/201833543개발 환경 구성: 384. 영문 설정의 Windows 10 명령행 창(cmd.exe)의 한글 지원 [6]
11558정성태6/24/201827031.NET Framework: 775. C# 7.3 - unmanaged(blittable) 제네릭 제약파일 다운로드1
11557정성태6/22/201824487.NET Framework: 774. C# - blittable 타입이란?파일 다운로드1
11556정성태6/19/201832729.NET Framework: 773. C# 7.3 - 구조체의 고정 크기를 갖는 fixed 배열 필드에 대한 직접 접근 가능 [1]파일 다운로드1
11555정성태6/18/201824705.NET Framework: 772. C# 7.3 - 사용자 정의 타입에 fixed 적용 가능(Custom fixed)파일 다운로드1
11554정성태6/17/201826402.NET Framework: 771. C# 7.3 - 자동 구현 속성에 특성 적용 가능(Attribute on backing field)
11553정성태6/15/201825014.NET Framework: 770. C# 7.3 - 개선된 메서드 선택 규칙 3가지(Improved overload candidates)파일 다운로드1
11552정성태6/15/201828224.NET Framework: 769. C# 7.3에서 개선된 문법 4개(Support == and != for tuples, Ref Reassignment, Constraints, Stackalloc initializers)파일 다운로드1
11551정성태6/14/201823924개발 환경 구성: 383. BenchmarkDotNet 사용 시 주의 사항
11550정성태6/13/201823061.NET Framework: 768. BenchmarkDotNet으로 Span<T> 성능 측정 [2]
11549정성태6/13/201826357개발 환경 구성: 382. BenchmarkDotNet에서 생성한 BuildPlots.R 파일을 실행하는 방법
... 91  92  93  94  95  96  97  [98]  99  100  101  102  103  104  105  ...