web-dev-qa-db-ja.com

参照された依存関係を含むNuGetパッケージを自動的にビルドする

ローカル/内部のNuGetリポジトリを実行する にしたい。 NuGetを使用してダミーのプロジェクトに既存のNuGetパッケージを含め、パッケージファイルをスキャンして ローカルにキャッシュされた.nupkgファイルを取得 することで、既存のNuGetパッケージを「再利用」する方法を見つけたと思いますが、 ...

取得したものだけでなく、自動的にalldll依存関係を含めて、プロジェクトからnugetパッケージ(.nupkg)を作成する方法NuGet経由?

具体的には:

  1. ソリューションを作成する
  2. 新しいプロジェクトを追加する
  3. さまざまな.dllファイル/他のプロジェクトへの参照を追加<-これは欠落している部分です
  4. パッケージマネージャー/ cmdline /何でもNuGetパッケージを追加します
  5. something.nupkgを自動的に作成します

私が見つけたものから、あなたは次のようなことをすることになっています

  • .csprojファイルを手動で編集して<BuildPackage>true</BuildPackage>を追加し、依存関係を含めます
  • .nuspecファイルを手動で作成し、手動で 依存関係を一覧表示 (- similar?
  • nuget packファイルで.nuspecを手動で実行します

しかし、すべてが手動であり、それは愚かです。半自動のソリューションでさえ、依然として厄介または半手動です。

  • Create .nuspec templates -依存関係を含まないようで、メタデータのみ
  • build-eventを介したNuget Pack (ステップ#5)、すべてのプロジェクトに手動で追加する必要があり、 独自の癖

    "$(SolutionDir).nuget\NuGet.exe" pack "$(ProjectPath)" -Properties Configuration=Release
    move /Y *.nupkg "$(TargetDir)"
    

プロジェクト参照から.nuspecマニフェストを自動的に作成するものを用意します。それから理論的には、その+ nuget build-eventをbuild-project/nugetパッケージにまとめることができます。これが本当に見たいものです。

54
drzaus

あなたのポイント#3(さまざまな.dllファイル/他のプロジェクトへの参照を追加<-これは欠落している部分です)には実際に2つの異なる問題があります:(1 )さまざまなdllファイルへの参照を追加し、(2)同じソリューション内の他のプロジェクトへの参照を追加します。

ここの番号(2)は、 NuGet 2.5 の時点でサポートが追加されました。プロジェクトのNuGetパッケージを作成するときに、同じソリューション内の他のプロジェクトへの参照を含めるオプションを追加できます。

nuget pack projectfile.csproj -IncludeReferencedProjects

projectfile.csprojは、NuGetパッケージとして公開されているソリューション内の他のプロジェクトを参照します。これらのプロジェクトのNuGetパッケージは、依存関係として追加されます。ソリューション内でがプロジェクトを参照している場合(==-==)が自身をNuGetパッケージとして公開しない場合、それらのDLLはこのNuGetパッケージに含まれます。

(1)に関して、NuGetパッケージとして利用できないプロジェクトにdllを頻繁に追加する場合、これらのファイルを使用して独自の(内部)NuGetパッケージを作成できます。これらのdllをファイルではなくNuGetパッケージとして直接追加すると、このNuGetパッケージはプロジェクトのNuGetパッケージの依存関係になります。

58
Julian

他のGoogle社員については、NuGet.targetsファイルを使用してNuGetパックを実行している場合、これを使用できます。

<Target Name="PrePackage" BeforeTargets="BuildPackage">
  <PropertyGroup>
    <BuildCommand>$(BuildCommand) -IncludeReferencedProjects</BuildCommand>
  </PropertyGroup>
</Target>
5
John Gietzen

これをチェックしてください!

私が見つけた解決策は、Visual Studioの拡張機能です: https://visualstudiogallery.msdn.Microsoft.com/fbe9b9b8-34ae-47b5-a751-cb71a16f7e96/view/Reviews

Nuget Packageという新しいプロジェクトを追加するだけです NuGet Package

次に、プロジェクトを参照とBOOOMに追加します。すべての依存関係とファイルディレクトリが自動的に追加されます。 NuSpecデータを変更する場合は、プロジェクトで右クリックして[プロパティ]に移動し、必要なものを変更します。生成されたNuSpecおよびnupkgは、新しいプロジェクトのフォルダーobjにあります。私はそれが役立つことを願っています;)。