NuGet의 패키지를 버전 제어에 체크인 하시겠습니까?
NuGet 이전에는 모든 외부 DLL을 체크인하는 것이 일반적으로 허용되는 '모범 사례'였습니다. 일반적으로 Libs
또는 3rdParty
디렉토리에 있습니다.
NuGet으로 작업 할 때 packages
디렉터리 를 체크인해야 합니까? 아니면 MSBuild가 nuget 피드에서 필요한 패키지를 자동으로 다운로드하는 방법이 있습니까?
아니
이 질문을 사용하고 이제 패키지를 소스 제어에 커밋하지 NuGet을 사용할 수있는 쉬운 워크 플로가 있습니다.
패키지 관리자 콘솔에서 'NuGetPowerTools' 를 설치해야합니다 .
Install-Package NuGetPowerTools
그런 다음 프로젝트에서 팩 복원을 지원해야합니다.
Enable-PackageRestore
이제 패키지 폴더없이 코드베이스를 커밋 할 준비가되었습니다. 이전 명령은 패키지가 누락 된 경우 자동으로 다운로드 및 추가 가능한 프로젝트 파일을 변경했습니다.
출처
예. 질문에서 언급 한 "libs"디렉토리와 동일한 "packages"디렉토리를 고려하십시오. OSS 프로젝트에서 개인적으로 취하는 접근 방식입니다.
MSBuild가 필요한 패키지를 자동으로 다운로드 할 수있는 기능을 조사 중이지만 아직 구현되지 않았습니다 (NuGet 1.1 기준).
일부 사람들은 이미 기능을 자체적으로 구현할 수 있습니다. 우리의 계획은 NuGet 1.2 또는 1.3에 해당 기능이 내장하는 것입니다.
여기에있는 모든 대답에도 불구하고 "어떤 종류의"버전 제어하에 모든 것을 갖지 않는 것은 여전히 끔찍한 해결입니다.
GIT의 경우는 GIT-LFS를 의미합니다.
NPM과의 최근 에피소드는 당신이 의존하는 인터넷 저장소가 고장 나거나 사용할 수 없는지 등을 보여줍니다.
더 이상 물건을 만들 수 없습니다.
질문을 한 후, 나는 toplovel 패키지 디렉토리 를 확인해야합니다. 다음과 같은 접근 방식을 적용했습니다 .
최상위 build.msbuild 파일에서 :
<Target Name="NuGet">
<ItemGroup>
<NuGetPackage Include="*\packages.config" />
</ItemGroup>
<Exec Command='libs\NuGet.exe install "%(NuGetPackage.FullPath)" -o Packages' />
<!-- optional for project that has JavaScript content -->
<CreateItem Include="Packages\*\Content\Scripts\*">
<Output TaskParameter="Include" ItemName="NuGetJSFiles"/>
</CreateItem>
<Copy SourceFiles="@(NuGetJSFiles)" DestinationFolder="MainProj\Scripts\" OverwriteReadOnlyFiles="true" SkipUnchngedFiles="true" />
<Delete Files="MainProj\Scripts\.gitignore" />
<WriteLinesToFile File="MainProj\Scripts\.gitignore" Lines="%(NuGetJSFiles.Filename)%(NuGetJSFiles.Extension)" /
<Delete Files="@(PostNuGetFiles)" />
</Target>
각 project.csproj 파일에서
<Target Name="BeforeBuild">
<Error Condition="!Exists('..\Packages\')" Text="You must run > msbuild build.msbuild to download required NuGet
Packages" />
<!-- optional for project that has JavaScript content -->
<ReadLinesFromFile File="Scripts\.gitignore">
<Output TaskParameter="Lines" ItemName="ReqJSFiles" />
</ReadLinesFromFile>
<Message Text="@(ReqJSFiles)" />
<Error Condition="!Exists('Scripts\%(ReqJSFiles.Identity)')" Text="You must run > msbuild build.msbuild to download required NuGet JS Package - Scripts\%(ReqJSFiles.Identity)" />
</Target>
이 질문이 처음에 게시되고 답변되었을 때 현실이 달랐지만 다행히 답변이 약간 변경되었습니다. 이제 NuGet을 사용하여 Pre-Build 이벤트를 사용하여 MSBuild를 통해 종속성을 다운로드 할 수 있습니다. 코드 저장소에 패키지 폴더를 넣을 필요가 없으며 모든 종속성은 빌드시 다운로드 및 / 또는 업데이트됩니다. 해결 방법 일 수 있지만 괜찮아 보입니다. 자세한 내용은 다음 블로그 게시물을 참조하십시오. http://blog.davidebbo.com/2011/03/using-nuget-without-committing-packages.html
2013 년 9 월 20 일부로 "Nuget Restore"라는 것이 있습니다. 원할 경우 실제로 패키지 폴더를 체크인 할 필요가 없습니다. (특히 DVCS를 사용하는 경우)
이것을 확인하십시오 : 패키지를 소스 제어에 커밋하지 않고 NuGet 사용 http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
이 게시물은 매우 오래되었습니다. 대답은 여전히 아니오이지만 솔루션이 변경되었습니다. NuGet 2.7 이상부터는 소스에 NuGet.exe 파일을 포함하지 않고도 자동 패키지 복원을 활성화 할 수 있으며 (최소한 말하지 않는 것은 바람직하지 않음) 최신 DVCS를 사용하는 경우 패키지 폴더를 무시할 수 있습니다. 특별한 사용자 지정이 필요한 경우 솔루션 루트에 nuget.config 파일을 만들 수 있습니다.
http://docs.nuget.org/docs/reference/package-restore
또한 새로운 csproj 형식을 사용하면 지금 통합되어 있으므로 추가 nuget.config 파일도 피할 수 있습니다. 더 잘 설명하는이 게시물을 확인하십시오.
참고 URL : https://stackoverflow.com/questions/4978709/checking-in-packages-from-nuget-into-version-control
'IT' 카테고리의 다른 글
Sass에서 @include 대 @extend 사용? (0) | 2020.09.12 |
---|---|
lucene은 문서를 어떻게 설치 색인? (0) | 2020.09.12 |
고해상도 화면을 시뮬레이션하는 방법은 무엇입니까? (0) | 2020.09.12 |
훌륭한에서의 str 성능 (0) | 2020.09.12 |
파일을 삭제하는 배치 펼쳐 (0) | 2020.09.12 |