OpenWrap 대 NuGet
OpenWrap과 NuGet의 차이점은 무엇입니까? 그리고 당신은 무엇을 선호합니까?
OpenWrap은 빌드시뿐만 아니라 런타임에도 애플리케이션의 종속성 관리를 제공하는 오픈 소스 프로젝트입니다.
따라서 우리의 기능은 복합 WPF 애플리케이션, 웹 앱 개발 또는 시스템 전체 유틸리티에 대한 종속성의 동적 해결을 목표로합니다. 이것은 우리의 구현을 NuGet이하는 것과 매우 다릅니다.
그래서 여기에 다른 것들이 있습니다 (아마 많이 잊을 것입니다. 그러나 아 잘).
- Visual Studio에 의존하지 않고 UI가 아닌 명령 줄에서 생산성에 집중
- powershell에 의존하지 않는 OW에는 자체 명령 시스템이 함께 제공되어 쉘 (o.exe 도구) 또는 MSBuild 자체에서 자체 명령을 개발, 배포 및 실행할 수 있습니다.
- OpenWrap은 OpenWrap을 사용하여 자체적으로 구축하고 배포하며 모든 단계에서 xcopy 친화적입니다.
- 시스템 전체의 패키지 저장소가 있으므로 솔루션 당 한 번이 아닌 한 번 유틸리티 명령을 배포 할 수 있습니다.
- 원하는 경우 런타임에 동적 종속성 해결을 지원합니다.
- 확장 가능한 패키지 형식이 있으므로 패키지에 새로운 유형의 종속성을 생성하고 OpenWrap을 통해 애플리케이션에서이를 사용할 수 있습니다.
- OpenWrap 패키지와 NuGet 패키지 및 리포지토리 모두 지원
- XML 및 OData의 복잡성에서 벗어나 쉽고 빠르게 배울 수있는 간단한 텍스트 기반 DSL에 적합합니다.
- 통합 빌드를 지원하므로 한 번에 솔루션을 빌드하고 패키징 할 수 있습니다.
- openwrap 셸 또는 msbuild 작업에서 게시 할 수있는 네트워크 공유의 사용자 지정 리포지토리를 지원합니다.
- 종속성 평준화를 제공하여 해결할 패키지 버전 조합을 자동으로 선택합니다.
- Resharper 통합은 종속성에 대한 모든 변경 사항이 실시간으로 VS에 반영됨을 의미합니다.
- TeamCity 통합은 MSBuild 스크립트 또는 명령 줄에서 정확히 동일한 프로세스를 사용하여 패키지를 빌드, 패키징 및 배포 할 수 있음을 의미합니다.
- 확장 가능한 빌더는 OpenWrap 내에서 빌드가 트리거되는 방식을 변경할 수 있음을 의미합니다.
- 테스트 러너 지원 및 패키지와 함께 테스트 배송
- 지원되는 MSBuild 확장 성 지점을 사용하여 어셈블리 참조를 포함하고 빌드 한 코드는 그대로 둡니다. 바이너리를 제공 하면 빌드시에만 openwrap 코드 종속성이 없습니다 .
그것은 당신이 요청한 것이므로 차이점에 대한 것이므로 다른 패키지 관리자와 동일한 작업을 수행하는 것에 대해 귀찮게하지 않을 것입니다.
NuGet 측면에서 몇 가지 생각을 듣고 싶었습니다. Seb은 지적 할 가치가있는 몇 가지 세부 사항을 생략합니다.
- 기본 UI는 VS 기반이지만 핵심 NuGet 어셈블리는 VS와 관련이 없습니다. ASP.NET 웹 페이지 제품에는 웹 기반 패키지 관리자가 있습니다. 런타임에 자체 업데이트되는 웹 사이트를 구축하기 위해 NuGet을 사용하는 한 가지 예를 보여주는 블로그 게시물을 작성했습니다. http://haacked.com/archive/2011/01/15/building-a-self-updating-site-using-nuget.aspx
- NuGet은 강력한 PowerShell 콘솔을 제공합니다. NuGet 패키지는 콘솔에 새 명령을 추가 할 수 있습니다. http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/를 참조하십시오 . 이전과 마찬가지로 이것은 NuGet에 대한 하나의 클라이언트이며 NuGet 코어에는 필요하지 않습니다.
- NuGet은 VS 확장 갤러리를 통해 설치할 수 있으며 즉시 시작할 수 있습니다.
- NuGet은 패키지 집합이 포함 된 디렉터리 (또는 네트워크 공유)에서 클라이언트를 가리키는 것을 지원하고이를 리포지토리로 자동 처리합니다. 따라서 OData를 다루고 싶지 않다면 그럴 필요가 없습니다. 하지만 갤러리 구현도 포함되어있어 어떤 경우에도 OData / XML을 수동으로 처리 할 필요가 없습니다.
- NuGet은 애플리케이션의 일부로 NuGet의 어떤 부분도 배포 할 필요가 없습니다. 손을 떼지 않고 NuGet없이 수행 할 단계를 자동화하여 종속성을 획득하고 배포하는 데 중점을 둡니다. 명확하게 말하면 Seb이 지적했듯이 OpenWrap도 마찬가지입니다. NuGet이 이것을 필요로하지 않는다는 것을 분명히하고 싶었습니다.
NuGet의 핵심 원칙 중 하나 (그리고 OpenWrap과의 중요한 차이점)는 작업 방식을 변경하지 않는다는 것입니다. 대신 현재 이미하고있는 일을 훨씬 쉽게 수행 할 수 있습니다.
예를 들어 Bar 라이브러리에 의존하는 Foo 라이브러리를 사용하려고한다고 가정 해보십시오. 오늘날에는 이러한 라이브러리를 수동으로 찾아서 컴퓨터에 복사하고 참조를 추가해야합니다. 그런 다음 나중에 최신 버전이 나오고 유사한 동작을 통해 업데이트 할 것입니다.
이러한 시나리오에서는 NuGet과 OW 모두 이러한 참조를 쉽게 가져올 수 있지만 핵심적인 차이점은 NuGet이 완전히 비 침습적 인 방식으로 수행한다는 것입니다. 즉, 바이너리를 컴퓨터로 가져와 수동으로 수행 한 것과 같은 방식으로 참조합니다. 그런 다음 프로젝트 파일은 빌드 또는 런타임에 NuGet에 연결되지 않고 완전히 '정상'입니다.
이것이 의미하는 바는 NuGet을 통해 일부 라이브러리를 가져 와서 프로젝트를 소스 제어에 넣으면 다른 개발자가 NuGet 없이도 프로젝트를 사용할 수 있다는 것입니다.
OpenWrap 접근 방식도 장점이 있지만 그 경로를 따르려면 OpenWrap을 끝까지 사용할 의향이 있어야하며 쉽게 벗어날 수 없습니다.
NuGet의 풍부한 VS 지원과 같은 다른 많은 차이점이 있지만 이것이 제가보기에 둘 사이의 가장 근본적인 차이점입니다.
참조 URL : https://stackoverflow.com/questions/4256994/openwrap-vs-nuget
'program story' 카테고리의 다른 글
뒤로 이동할 때 UITableView를 다시로드 하시겠습니까? (0) | 2021.01.10 |
---|---|
LINQ를 사용하여 C #의 정렬 목록 (0) | 2021.01.10 |
malloc을 사용할 때`void * '에서`char *'로의 잘못된 변환? (0) | 2021.01.10 |
시간당 DateTime 수에 따른 SQL Server 그룹? (0) | 2021.01.10 |
IIS 관리자에서 SSL 인증서 적용 및 "다른 프로세스에서 사용 중이므로 프로세스에서 파일에 액세스 할 수 없습니다."오류 (0) | 2021.01.10 |