2014-12-11 10 views
4

Asp.Net vnext/5는 roslyn을 사용하여 즉석에서 컴파일하고 전혀 어셈블리를 생성하지 않습니다. 대부분의 코드 계약 도구는 컴파일 타임 코드 변환을 사용하여 계약을 런타임 검사로 변환합니다.asp.net의 디스크에 DLL이없는 계약서 계약서 5/vnext

Asp.Net 5에서 어떻게 작동합니까? 나는 매개 변수에 [NotNull]과 같은 attibute 기반 계약을 사용하는 것을 좋아하지만, 컴파일 단계가없고 어셈블리가 없다면이 모든 것들은 작동하지 않습니다.

어디로 가는가?

답변

3

빌드 할 때의 기본 동작은 말한대로이지만, 오히려 출력 파일을 만들 수있는 옵션이 있습니다.

명령 줄에서 작업하는 경우 project.json 파일의 위치로 이동하여 kpm build 명령을 사용하십시오. 이렇게하면 Nuget 패키지가 생성되고 dll을 대상으로하는 각 프레임 워크의 익숙한 위치에 남겨 둡니다.

예를 들어, aspnet50,을 대상으로하는 경우 당신은 \bin\Debug\YourProject.Version.nupkg으로 끝낼 수 있고 \bin\Debug\aspnet50\YourProject.dll.

Nuget 패키지는 목표로 각 프레임 워크에 필요한 어셈블리를 포함, 당신은 빌드의 내부 디렉토리를해야합니다 DLL이있는 각 프레임 워크의 구성 폴더 (예 : 디버그).

Visual Studio 2015 미리보기를 사용하는 경우 프로젝트의 기본 빌드 동작을 변경하여 각 빌드에서 동일한 작업을 수행 할 수 있습니다. 이를 수행하려면 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 Properties.을 선택하십시오. Build 탭에는 Visual Studio에서 패키지를 빌드하고 각 빌드에 DLL을 작성할 때와 동일한 빌드 출력을 생성하는 확인란이 있습니다 수동으로 kpm build을 사용하십시오.

+1

알아 냈어 - 너무 좋았어! 그러나 제 3 자 도구를 사용하면 명시적인 빌드 프로세스가 필요하다는 점에 약간의 불편 함이 있습니다. 어쨌든 roslyn은 컴파일러로서의 서비스 이후로 메타 프로그래밍 부분을 수행하는 것이 좋을 것입니다. 슬프게도 로슬린 팀은 의도적으로 그 길을 무시하고 커뮤니티가 물건을 찾을 때까지 기다리는 것 같습니다. 로즌에서 런타임 동작 변경을 허용하는 멋지게 디자인 된 확장 점이 없으면 모든 사람이 코드를 포크하고 변경할 수 있지만 내 VS 빌드는 변경되지 않습니다. – Lev