참조 된 종속성을 포함하여 NuGet 패키지 자동 빌드
로컬 / 내부 NuGet 저장소 를 실행하고 싶습니다 . NuGet을 사용하여 더미 프로젝트에 기존 NuGet 패키지를 포함하고 패키지 파일을 스캔하여 로컬에서 캐시 된 .nupkg파일 을 가져옴으로써 기존 NuGet 패키지를 "재사용"하는 방법을 알아 냈다고 생각 하지만 ...
NuGet을 통해 .nupkg가져온 종속성뿐만 아니라 모든 dll 종속성을 자동으로 포함하여 프로젝트에서 nuget 패키지 ( )를 어떻게 생성 합니까?
구체적으로 특별히:
- 솔루션 만들기
- 새 프로젝트 추가
- 다양한
.dll파일 / 기타 프로젝트에 대한 참조 추가 <-이것은 누락 된 부분입니다. - 패키지 관리자 / cmdline / 무엇이든을 통해 NuGet 패키지 추가
- 뭔가 자동으로 생성
.nupkg
내가 찾은 것에서 당신은 다음과 같은 일을해야합니다.
- 종속성을 포함하도록
.csproj파일을 수동으로 편집하십시오.<BuildPackage>true</BuildPackage> - 수동으로
.nuspec파일을 만들고 종속성을 수동으로 나열합니다 ( 유사? ). - 파일
nuget pack에서 수동으로 실행.nuspec
그러나 모든 것이 수동이며 어리 석습니다. 반자동 솔루션조차도 여전히 어색하거나 반 수동입니다.
.nuspec템플릿 만들기 -종속성을 포함하지 않고 메타 데이터 만 포함하는 것 같습니다.모든 프로젝트에 수동으로 추가해야하는 build-event (단계 # 5) 를 통한 nuget pack 에는 고유 한 단점이 있습니다 .
"$(SolutionDir).nuget\NuGet.exe" pack "$(ProjectPath)" -Properties Configuration=Release move /Y *.nupkg "$(TargetDir)"
.nuspec프로젝트 참조에서 매니페스트 를 자동으로 생성하는 것에 만족할 것입니다 . 그런 다음 이론적으로 + 너겟 빌드 이벤트를 빌드 프로젝트 / 너겟 패키지로 롤업 할 수 있습니다. 이것이 제가 정말로보고 싶은 것입니다.
포인트 # 3 ( 다양한 .dll 파일 / 다른 프로젝트에 대한 참조 추가 <-이것은 누락 된 부분 )에는 실제로 두 가지 다른 문제가 있습니다. (1) 다양한 dll 파일에 대한 참조를 추가하고 (2) 다른 프로젝트에 대한 참조를 추가합니다. 동일한 솔루션.
여기 번호 (2)는 NuGet 2.5부터 일부 추가 지원을 받았습니다 . 프로젝트에 대한 NuGet 패키지를 만들 때 동일한 솔루션의 다른 프로젝트에 대한 참조를 포함하는 옵션을 추가 할 수 있습니다.
nuget pack projectfile.csproj -IncludeReferencedProjects
projectfile.csprojNuGet 패키지로도 노출되는 솔루션의 다른 프로젝트를 참조하는 경우 이러한 프로젝트의 NuGet 패키지가 종속성으로 추가됩니다. NuGet 패키지로 자신을 노출 하지 않는 솔루션의 프로젝트를 참조하는 경우 해당 dll이이 NuGet 패키지에 포함됩니다.
(1)의 경우 NuGet 패키지로 사용할 수없는 dll을 프로젝트에 자주 추가하는 경우 이러한 파일로 고유 한 (내부) NuGet 패키지를 만들 수 있습니다. 그런 다음 이러한 dll을 파일 대신 NuGet 패키지로 추가하면이 NuGet 패키지는 프로젝트의 NuGet 패키지에서 종속성이됩니다.
다른 Google 직원의 경우 NuGet.targets 파일을 사용하여 NuGet Pack을 실행하는 경우 다음을 사용할 수 있습니다.
<Target Name="PrePackage" BeforeTargets="BuildPackage">
<PropertyGroup>
<BuildCommand>$(BuildCommand) -IncludeReferencedProjects</BuildCommand>
</PropertyGroup>
</Target>
이것 좀 봐!
내가 찾은 솔루션은 Visual Studio의 확장입니다 : https://visualstudiogallery.msdn.microsoft.com/fbe9b9b8-34ae-47b5-a751-cb71a16f7e96/view/Reviews
Nuget Package NuGet Package 라는 새 프로젝트를 추가하기 만하면됩니다.
그런 다음 흥미로운 프로젝트를 참조 및 BOOOM에 추가합니다! 모든 종속성 및 파일 디렉토리가 자동으로 추가됩니다. NuSpec 데이터를 수정하려면 프로젝트에서 마우스 오른쪽 버튼을 클릭하고 속성으로 이동 한 다음 원하는 항목을 수정합니다. 생성 된 NuSpec 및 nupkg는 새 프로젝트의 obj 폴더 에 있습니다. 나는 그것이 도움이되기를 바랍니다;).
'Program Club' 카테고리의 다른 글
| CUDA를 C #으로 코딩 하시겠습니까? (0) | 2020.12.31 |
|---|---|
| 일부 명령은 수퍼 유저로 실행하고 일부 명령은 수퍼 유저로 실행하지 않고 실행하는 쉘 스크립트를 작성하는 방법은 무엇입니까? (0) | 2020.12.31 |
| Entity Framework 6.1 및 MVC 5를 사용하여 데이터베이스에서 Code First를 사용한 후 모델을 동기화하는 방법은 무엇입니까? (0) | 2020.12.31 |
| 솔로 개발자를위한 최고의 연속 통합 설정 (.NET) (0) | 2020.12.31 |
| Java에서 InputStream.available ()은 무엇을합니까? (0) | 2020.12.31 |