[.net] 여러 프로젝트가있는 솔루션을위한 NuGet

3 개의 프로젝트가있는 솔루션이 있다고 가정하십시오.

  • 핵심
  • UI
  • 테스트

내가 사용하는 NuGet 패키지 중 일부는 3 가지 프로젝트 모두에 적용됩니다. 일부는 UI 및 테스트에만 적용되고 일부는 NUnit과 같은 테스트에만 적용됩니다.

NuGet을 사용하여 이것을 설정 하는 올바른 방법 은 무엇입니까 ?

  1. 참조가 필요할 때마다 세 프로젝트 모두에서 “라이브러리 패키지 참조 추가”를 사용해야합니까?
  2. 패키지가 처음 필요할 때 “라이브러리 패키지 참조 추가”를 사용한 다음 참조 추가-> 찾아보기를 사용하여 후속 사용법을 사용해야합니까?

두 경우 모두 몇 개의 packages.config 파일을 가져야합니까?



답변

이 문제를 해결하려는 사람에게는 다음 옵션이 있습니다.

솔루션> 솔루션의 NuGet 패키지 관리 …를 마우스 오른쪽 단추로 클릭하십시오.

… 또는 :

도구> 라이브러리 패키지 관리자> 솔루션 용 NuGet 패키지 관리 …

설치된 패키지 영역으로 이동하면 솔루션의 모든 프로젝트에서 단일 패키지를 ‘관리’할 수 있습니다.


답변

콘솔을 사용하여 여러 프로젝트를 대상으로

Tools > Library Package Manager > Package Manager Console

그런 다음이 명령을 사용하십시오

Get-Project PROJECT-NAMES-WITH-COMMAS | Install-Package PACKAGENAME

예를 들어

Get-Project Core,UI | Install-Package FluentDateTime


답변

이 달콤한 거래는 저에게 효과적입니다.

PM> Get-Project -all | where {$_.Name -match "Songhay.Silverlight" -and
    $_.Name -notmatch "ApplicationLoader" -and $_.Name -notmatch ".Xml"}
    | ForEach-Object {Install-Package MvvmLight -project $_.Name}


답변

여러 솔루션에 패키지를 설치하려면 편리한 Powershell 스크립트를 작성했습니다 ( 여기 참조) .

Get-Project -All명령을 필터링 하고 프로젝트 목록의 하위 세트를 대상으로 지정할 수도 있습니다 .


답변

솔루션의 모든 프로젝트에서 모든 외부 라이브러리에 대해 “라이브러리 패키지 참조 추가”를 사용해야합니다. 프로젝트 당 packages.config가 생성됩니다.

그러나 패키지는 한 번만 다운로드하여 다른 모든 프로젝트에서 로컬로 재사용합니다.


답변

에서 패키지 관리자 콘솔 다음 쓸 수있는 명령을 :

Get-Project -all | ForEach-Object {Get-Package -ProjectName $_.Name -filter
PACKAGE_NAME} | where-object { $_.id -eq 'PACKAGE_NAME' } | Install-Package
PACKAGE_NAME -Version VERSION

설치 또는 업데이트에도 해당 명령을 사용할 수 있습니다 (Update-Package)


답변