web-dev-qa-db-ja.com

nuspecファイルにフォルダーを追加する方法

だから私は実際にWebサイトプロジェクト(Webアプリケーションではなくcsprojファイルではない)をNuGetパッケージにパッケージングしようとしています.

OctoPackの使用を検討しましたが、WebサイトプロジェクトはWebアプリケーションプロジェクトのみをサポートしていません。

フォルダー(私の場合はWebサイト)をNugetパッケージに追加する方法を見つけようとしていますが、Nugetはコマンドラインでこれを許可しませんか? .csprojファイルも必要です!

また、NuGet仕様ファイルを作成してフォルダーに渡そうとしましたが、できませんでしたか?

今のところ、NuGetパッケージエクスプローラーを使用する必要があるかもしれませんが、これをスクリプト化したいと思います。

私はこの質問を見ましたが、私のシナリオを処理していないようです プロジェクトファイルなしでヌゲットパッケージを作成できます

だから誰もがコマンドラインを介してNuGetパッケージにフォルダを追加する最善の方法を知っていますか?

25
Lee Englestone

OctoPackはわかりませんが、nuget.exeを使用すると、パッケージ化は2つの手順で行われます。

  1. .nu​​specを手動で作成するか、.csprojまたは既存のアセンブリから生成します( ドキュメントnuget specを参照)。
  2. 前の手順で作成した.nuspecをパラメーターとして使用して、nuget packを呼び出します。

.csprojが存在しないため、.nuspecを手動で(または NuGetパッケージエクスプローラー などのGUIツールを使用して)作成することができません。

.nu​​specファイルの作成方法については、すべて Nuspecリファレンス 、特に パッケージに含めるファイルの指定 に関するセクションを参照してください。

パッケージにフォルダーを(再帰的に?)含める場合は、次のようなものをXMLに追加する必要があります。

<files>
  <file src="bin\Release\**\*.*" target="content" /> 
</files>

これにより、bin\Releaseフォルダーのすべてのファイルと(再帰)サブフォルダーが取得され、NuGetパッケージのcontentフォルダーに配置されます。

OctopusDeployがパッケージでどのような形式を想定しているかわかりませんが、それがパッケージにフォルダーを含める方法です。

[〜#〜] edit [〜#〜]OctoPack README にこれに関するドキュメントがあるようです。

41
khellang