Project.json 파일

번역: 남정현



날짜: 2014-08-24



이 문서에 대하여


이 문서는 2014년 8월 19일에 작성된 https://github.com/aspnet/Home/wiki/Project.json-file 의 내용을 한국어로 번역한 것으로, 원본 문서 작성자는 ASP.NET vNext 팀입니다. 오역, 어색한 부분, 매끄럽지 않은 부분이 있을 경우 알려주시면 적극적으로 반영하도록 하겠습니다.


스키마


http://json.schemastore.org/project


의존성


 


 


의존성 섹션은 여러분의 애플리케이션이 사용하는 모든 의존성들을 열거합니다. 이름과 버전으로 정의할 수 있으며, 런타임 로더가 어떤 것을 반드시 로드해야 할지 결정합니다. NuGet 패키지, 소스 코드 등이 될 수 있습니다.


<br /> {</P>
<P>“dependencies”: {</P>
<P>“Microsoft.AspNet.ConfigurationModel”: “0.1-alpha-<em>”,</P>
<P>“SomeProject”: “”</P>
<P>}</P>
<P>}<br /> 


여기서 사용할 수 있는 또 다른 기능으로 아래와 같이 더 구체적으로 의존성 설정을 지정하는 것이 가능합니다.


<br /> {</P>
<P>“dependencies”: {</P>
<P>“Microsoft.AspNet.ConfigurationModel”: { “version”: “0.1-alpha-</em>”, “options”: “private” },</P>
<P>“FakeToolingPackage” : {“version”: “0.1”, “options”: “dev”},</P>
<P>“SomeProject”: “”</P>
<P>}</P>
<P>}<br /> 


참조에는 여러 가지 다른 종류들이 있을 수 있습니다.


•Private – 의존성을 인텔리센스나 혹은 컴필레이션에 노출하지 않도록 할 수 있습니다.


 


•Bago (Build and go away) – 이 참조를 컴파일한 후에 대상 프로젝트 안으로 같이 컴파일됩니다.


 


어떻게 의존성 버전이 선택되는지에 대한 더 상세한 정보는 https://github.com/aspnet/Home/wiki/Dependency-Resolution 에서 자세히 확인할 수 있습니다.


Configurations 섹션


Configurations는 컴필레이션 설정에 대한 이름이 붙여진 그룹 항목들입니다. 실행 시점에는 기본으로 주어지는 설정 두 가지가 있는데, 바로 Debug와 Release입니다. 이들 설정을 project.json에 필요에 따라 다시 설정하거나 새로운 설정을 더 추가하는 것도 가능합니다.


<br /> {</P>
<P>“configurations”: {</P>
<P>“Debug”: {</P>
<P>“compilationOptions”: {</P>
<P>“define”: ["DEBUG", "TRACE"],</P>
<P>“debugSymbols”: “full”</P>
<P>}</P>
<P>},</P>
<P>“Release”: {</P>
<P>“compilationOptions”: {</P>
<P>“define”: ["RELEASE", "TRACE"],</P>
<P>“optimize”: true,</P>
<P>“debugSymbols”: “pdbOnly”</P>
<P>}</P>
<P>}</P>
<P>}</P>
<P>}<br /> 


Frameworks 섹션


어느 프레임워크를 대상으로 개발된 프로그램인지 정의하고, 해당 구성에서 참조하는 의존성들을 dependencies에서 정의할 수 있습니다. 아래 코드 조각에서는 데스크톱 (net45) 또는 Core CLR (k10) 중 하나를 사용할 것입니다. Core CLR은 BCL을 만들기 위해서 더 많은 참조들에 대한 의존성을 가집니다.


<br /> {</P>
<P>“frameworks”: {</P>
<P>“net45″: {},</P>
<P>“k10″: {</P>
<P>“dependencies”: {</P>
<P>“System.Collections”: “4.0.0.0”,</P>
<P>“System.Collections.Concurrent”: “4.0.0.0”,</P>
<P>“System.ComponentModel”: “4.0.0.0”,</P>
<P>“System.Linq”: “4.0.0.0”,</P>
<P>“System.Reflection”: “4.0.10.0”,</P>
<P>“System.Runtime”: “4.0.20.0”,</P>
<P>“System.Runtime.InteropServices”: “4.0.10.0”,</P>
<P>“System.Threading”: “4.0.0.0”,</P>
<P>“System.Threading.Tasks”: “4.0.0.0”</P>
<P>}</P>
<P>}</P>
<P>}</P>
<P>}<br /> 


Sources 섹션


sources 섹션은 컴파일해야 할 소스 코드들을 지정합니다.


<br /> {</P>
<P>“code”: “<em>.cs”,</P>
<P>“exclude”: “buggy/<strong>/*.cs”,</P>
<P>“resources”: “embed/</strong>/</em>.<em>”</P>
<P>}<br /> 


공유 파일 섹션


여러 프로젝트에서 의존하는 코드를 공유할 수 있습니다. 공유 어셈블리 정보 같은 내용을 담고 있는 코드를 공유하기 위해서, 공통 프로젝트를 만들고, 이 프로젝트에서 공유 파일 섹션을 포함하도록 공유할 코드를 참조하게 하면 됩니다. 그 후에는 새로 만든 공통 프로젝트를 참조하는 프로젝트라면 항상 프로젝트에 해당 파일들이 같이 포함되어 컴파일이 이루어지게 됩니다.


<br /> {</P>
<P>“shared”: “</em>.cs”</P>
<P>}<br /> 


컴파일 옵션


컴파일 옵션에서는 Roslyn으로 전달할 설정을 지정할 수 있습니다. 여기서 언어의 버전을 선택할 수 있습니다.


<br /> {</P>
<P>“compilationOptions”: {</P>
<P>“define”: ["SOMETHING"],</P>
<P>“allowUnsafe”: true,</P>
<P>“warningsAsErrors” : true,</P>
<P>“languageVersion”: “experimental”</P>
<P>}</P>
<P>}<br /> 


명령


K.cmd를 실행할 때에는 실행하려는 명령의 이름을 지정할 수 있습니다. 아래 코드 조각은 K web이라는 명령어를 실행할 때 셀프 호스트를 시작하도록 하고 있고, K test라는 명령어를 실행할 때에는 모든 단위 테스트를 실행하도록 하고 있습니다.


<br /> {</P>
<P>“commands”: {</P>
<P>“web”: “Microsoft.AspNet.Hosting server.name=Microsoft.AspNet.Server.WebListener server.urls=http://localhost:5001″,</P>
<P>“test”: “Xunit.KRunner”</P>
<P>}</P>
<P>}<br /> 


스크립트


KPM에서 어떤 일을 수행하기 전과 후에 발생하는 이벤트에 간섭하여 추가 작업을 지시할 수 있습니다.


<br /> {</P>
<P>“scripts”: {</P>
<P>“prebuild”: “echo before building”,</P>
<P>“postbuild”: “echo after building”,</P>
<P>“prepack”: “echo before packing”,</P>
<P>“postpack”: “echo after packing”,</P>
<P>“prerestore”: “echo before restoring packages”,</P>
<P>“postrestore”: “echo after restoring packages”</P>
<P>}</P>
<P>}<br /> 


그리고 사용 가능한 변수들은 다음과 같습니다.
</p><p>%project:Directory% – 프로젝트 디렉터리 경로
</p><p>%project:Name% – 프로젝트 이름
</p><p>%project:Version% – 프로젝트 버전<br />


메타데이터


프로젝트에 대한 메타데이터를 기록할 수 있습니다.


<br /> {</P>
<P>“version”: “0.1-alpha”,</P>
<P>“authors”: ["John Doe"],</P>
<P>“description”: “A wonderful library that does nice stuff”</P>
<P>}<br /> 


Entity Framework 프로젝트에서 가져온 project.json 파일의 한 예시


<br /> {</P>
<P>“version”: “0.1-alpha-<em>”,</P>
<P>“compilationOptions”: {</P>
<P>“warningsAsErrors”: true</P>
<P>},</P>
<P>“dependencies”: {</P>
<P>“Microsoft.Bcl.Immutable”: “1.1.18-beta-</em>”,</P>
<P>“Microsoft.AspNet.ConfigurationModel”: “0.1-alpha-<em>”,</P>
<P>“Microsoft.AspNet.DependencyInjection”: “0.1-alpha-</em>”,</P>
<P>“Microsoft.AspNet.Logging”: “0.1-alpha-<em>”,</P>
<P>“System.Data.Common”: “0.1-alpha-</em>”</P>
<P>},</P>
<P>“code”: “**<em>.cs;..Shared</em>.cs”,</P>
<P>“frameworks”: {</P>
<P>“net45″: {</P>
<P>“dependencies”: {</P>
<P>“System.Runtime”: “”,</P>
<P>“System.Collections”: “”</P>
<P>}</P>
<P>},</P>
<P>“k10″: {</P>
<P>“dependencies”: {</P>
<P>“System.Collections”: “4.0.0.0”,</P>
<P>“System.Collections.Concurrent”: “4.0.0.0”,</P>
<P>“System.ComponentModel”: “4.0.0.0”,</P>
<P>“System.Console”: “4.0.0.0”,</P>
<P>“System.Diagnostics.Contracts”: “4.0.0.0”,</P>
<P>“System.Diagnostics.Debug”: “4.0.10.0”,</P>
<P>“System.Globalization”: “4.0.10.0”,</P>
<P>“System.Linq”: “4.0.0.0”,</P>
<P>“System.Linq.Expressions”: “4.0.0.0”,</P>
<P>“System.Linq.Queryable”: “4.0.0.0”,</P>
<P>“System.Reflection”: “4.0.10.0”,</P>
<P>“System.Reflection.Extensions”: “4.0.0.0”,</P>
<P>“System.Resources.ResourceManager”: “4.0.0.0”,</P>
<P>“System.Runtime”: “4.0.20.0”,</P>
<P>“System.Runtime.Extensions”: “4.0.10.0”,</P>
<P>“System.Threading”: “4.0.0.0”,</P>
<P>“System.Threading.Tasks”: “4.0.10.0”</P>
<P>}</P>
<P>}</P>
<P>}</P>
<P>}<br /> 


 

댓글 남기기