1. ホーム
  2. version-control

[解決済み] NuGetからバージョンコントロールにパッケージをチェックインする?

2023-05-20 13:47:35

質問

NuGet 以前、プロジェクトで使用するすべての外部 DLL をチェックインすることは、一般に認められた「ベスト プラクティス」でした。通常 Libs または 3rdParty ディレクトリを作成します。

NuGet で作業しているとき、私はチェックインすることになっています。 packages ディレクトリにチェックインするのですか、それとも MSBuild が nuget フィードから必要なパッケージを自動ダウンロードする方法がありますか。

どのように解決するのですか?

質問してから、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 &gt; 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 &gt; msbuild build.msbuild to download required NuGet JS Package - Scripts\%(ReqJSFiles.Identity)" />
 </Target>