ASP.NET 5 클래스 라이브러리 프로젝트를 만드는 이유는 무엇입니까?


98

"ASP.NET 5 클래스 라이브러리"(vNext) C # 프로젝트가 ASP.NET과 어떤 관련이 있는지 알아 보려고합니다. 일반 C # "클래스 라이브러리"프로젝트가 아닌이 템플릿으로 프로젝트를 만드는 이유는 무엇입니까?

.csproj 파일 등이 아닌 project.json 파일과 같은 새로운 기능이 마음에 들지만 프로젝트가 ASP.NET 또는 IIS 등과 관련이없는 경우 "ASP.NET"클래스 라이브러리를 만드는 것이 옳지 않은 것 같습니다. 그것은 단지 비즈니스 로직 계층을위한 프로젝트 일뿐입니다. 새로운 WebApi ASP.NET 웹 사이트는 결국이 프로젝트를 참조 할 것이지만 현재로서는 관련이 없습니다.

이름이 잘못 되었나요? "vNext 클래스 라이브러리"라고 부르고 웹 앱처럼 보이는 아이콘을 사용하지 않아야합니까?


좋은 오래된 클래스 라이브러리 유형의 기존 프로젝트를 추가 할 수 있다고 생각하는시기에 대한 추정치가 있습니까? 이것은 MVC 5에서 ASP.NET 5 MVC 6으로의 마이그레이션을 방해하는 마지막 생각입니다.
radbyx

"ASP.NET 5 Class Library"는 ASP .NET Core와 다른 프레임 워크를 가지고 있지만 core에는 자체 Core Class Library 가 있으므로 대신 사용합니다.
Jaider

답변:


100

ASP.NET 5 클래스 라이브러리 프로젝트를 만드는 이유는 무엇입니까?

클래스 라이브러리 프로젝트 ( .csproj)에 비해 ASP.NET 5 클래스 라이브러리 프로젝트 ( .kproj) 의 많은 이점이 있습니다 .

  1. ASP.NET 5 클래스 라이브러리는 쉽게 여러 대상에 크로스 컴파일 프로젝트 지원 aspnet50, aspnetcore50, net45, 및 기타 다양한 휴대용 클래스 라이브러리의 변화를. 여기에는 Intellisense에 대한 풍부한 Visual Studio 지원이 포함되어 어떤 API를 어떤 대상에 사용할 수 있는지 알려줍니다.
  2. NuGet 패키지는 자동으로 생성되며, 이는 클래스 라이브러리와 관련하여 매우 일반적인 작업입니다.
  3. 파일 시스템이 변경 될 때 자동으로 솔루션 탐색기를 새로 고치는 것과 같은 경우 생산성이 향상됩니다. * .csproj 파일에서 충돌하는 변경 사항을 병합하려고 할 때 소스 제어에서 충돌이 줄어 듭니다.
  4. 플랫폼 간 컴파일 가능 (부분적으로 MSBuild에 의존하지 않기 때문에)

* .kproj 프로젝트에서 * .csproj 프로젝트를 참조 할 수 있지만 (이는 Visual Studio 2015의 새로운 미리보기를 통해 훨씬 쉬워졌습니다), 항상 몇 가지 수동 단계를 통해 가능했습니다.

이름에 "ASP.NET"이있는 이유는 무엇입니까?

이름에 관한 한, 곧 언급 될 역사의 유물입니다. 새로운 프로젝트 유형은 ASP.NET 5 응용 프로그램보다 훨씬 유용합니다. Visual Studio의 향후 미리보기에서 새 이름을 볼 수 있습니다.

  • .NET 콘솔 애플리케이션 (교차 플랫폼)
  • .NET 클래스 라이브러리 (교차 플랫폼)

2015 년 5 월 13 일 업데이트

Visual Studio 2015 RC 릴리스를 통해 업데이트 된 프로젝트 템플릿 이름을 볼 수 있습니다.

  • 클래스 라이브러리 (패키지)
  • 콘솔 애플리케이션 (패키지)

이들은 project.json파일과 .NET 실행 환경 (DNX)을 사용하여 프로젝트를 빌드, 실행 및 패키징 (NuGet 패키지로)합니다.

이러한 프로젝트 템플릿은 "웹"노드 아래의 새 프로젝트 대화 상자에 계속 표시되지만 이제 기본 "Visual C #"노드에도 표시됩니다.

VS2015 RC 클래스 라이브러리 / 콘솔 앱 템플릿


# 2에서 확장 할 수 있습니까? 인텔리 센스가 API를 제안한 다음 너겟 패키지를 다운로드한다는 의미입니까? JQuery를 입력하면 나에게 줄까요?
Simon_Weaver 2015 년

3
@Simon_Weaver 일반 클래스 라이브러리 프로젝트는 DLL과 PDB 만 생성하는 반면 새 프로젝트는 nuget.org에 업로드 할 수있는 NUPKG (NuGet 패키지)를 생성합니다.
Eilon 2015 년

2
.kproj는 그 이후 .xproj로 이름이 변경되었습니다
보리스식이 립 시즈에게

10

이것은 흥미로운 관찰입니다. 현재 템플릿은 ASP.NET 5 런타임과 호환되는 클래스 라이브러리를 생성합니다. 일반 C # 클래스 라이브러리에서는 얻을 수 없습니다.

이 디자인 질문을 추적하기 위해 다음 문제를 제출했습니다-https: //github.com/aspnet/Home/issues/281


감사합니다. 분명히 "ASP.NET 5 콘솔 응용 프로그램"과 동일한 이름 지정 문제입니다. "vNext Console Application"이라고 불러야합니다. 그렇지 않으면 개발자가 ASP.NET 웹 사이트에 대한 일종의 콘솔 앱과 혼동 할 수 있습니다. 템플릿의 위치를 ​​"Visual C #-> Web"에서 "Visual C #-> vNext"로 이동해야 할 수 있습니다.
mkaj

github 문제가 종료되었습니다. 더 나은 프로젝트 이름-감사합니다 : github.com/aspnet/Home/issues/281
mkaj

3

내가 이해하는 한 가지 이점은 ASP.NET 5 클래스 라이브러리 프로젝트의 최종 제품이 .dll 어셈블리가 아니라 NuGet 패키지라는 것입니다.

Visual Studio 2015에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 "게시 ..."옵션을 선택하여 NuGet 패키지를 생성 할 수 있습니다. 또는 명령 줄에서 "KPM 팩"을 사용할 수 있습니다.

또한 라이브러리에서 플랫폼 간 .NET을 실행할 수 있도록 ASP.NET 5 Core 런타임을 사용할 수 있습니다.


이름이 잘못 되었나요? ASP.NET과 관련이 없습니까?
mkaj

1
ASP.NET 5의 주요 목표 중 하나는 플랫폼 간 실행을 허용하는 것입니다. 일부는 "대신 .NET Core라고 부르면 안됩니까?"라고 물었습니다. 적어도 현재로서는 Microsoft의 다중 플랫폼 접근 방식은 웹 (및 콘솔 앱)에 대한 것이며 Java와 같은 데스크톱 개발을 지원하지 않습니다. 웹에 관한 것임을 강조하기 위해 그들은 "ASP.NET 5"라는 이름으로 모든 것을 브랜딩하고 있습니다. 크로스 플랫폼을 실행하는 라이브러리를 생성하려면 ASP.NET 5 클래스 라이브러리 여야합니다.
Thomas Kadlec

그것은 그가 물을 때 나는 내 상사 '예'를 말할 수있는 의미 'ASP.NET 최고의 기술'- 그의 이유
Simon_Weaver
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.