2016-07-13 22 views
1

ここにそのケースがあります。異なる顧客に展開できるWebアプリケーションがあります。 Webアプリケーションは、顧客ごとに異なるモジュールで拡張できます。モジュールは、NuGetパッケージとして作成され、DLLを、例えば以下のような静的ファイルと一緒に含む。 HTML、CSS、JS、ASMX ...Jenkins CIビルドジョブでNuGetパッケージを挿入する方法

すべての顧客が同じモジュールを使用しているわけではなく、基本Webアプリケーションのできるだけ滑らかなものでなければならないため、Webアプリケーションプロジェクト自体はモジュールについて何も知らない。代わりに、Jenkinsのビルドジョブを各顧客に提供しています。このビルドジョブでは、packages.configファイルが変更され、必要なモジュールのNuGetパッケージエントリが追加されます。次に、モジュールNuGetパッケージのnuget.exe restorenuget.exe update(最新バージョンを確実にするため)を行います。この後、私たちはmsbuildとOctopackを使ってWebアプリケーションをビルドし、展開します。

NuGetモジュールとweb.configの変換(web.config.install.xdt経由)に含まれているDLLにはうってつけですが、残念ながらそれに含まれる静的ファイルモジュールNuGetパッケージ:(

これは、Webアプリケーション.csprojファイルの参照がないためです。静的ファイルは実際に正しい場所にコピーされますが、最終的には追加されませんOctopack Nugetパッケージはプロジェクトコンテンツとして認識されないので、

これまでのところ私はNuGet CLIを使って解決することはできませんが、おそらく?パッケージマネージャーコンソールは、Visual StudioのPowerShellコンテキスト内でのみ使用できます。 (Update-Package -Reinstallは完全だろうと思います)

他のアイデアをお持ちですか?

答えて

0

次の解決策が見つかりました(勝つためのOctopack!)。 NuGetだけに頼るのではなく、Octopackから提供されたOctoPackEnforceAddingFiles=trueというオプションを使用します。これは、Octopackに、結果として得られるNuGetパッケージにプロジェクトファイルを追加するだけでなく、プロジェクトに追加した.nuspecファイルに定義されている<files>セクションにリストされているファイル/フォルダを追加することになります。参照:http://docs.octopusdeploy.com/display/OD/Using+OctoPack#UsingOctoPack-IncludingadditionalfilesusingaNuSpecfile(.nuspec)

私たちの基本プロジェクトは、空の<files>セクションのnuspecファイルしか持っていません。モジュールには、Octopackによって追加される追加のファイル/フォルダを構成するために、nuspecファイルをインストール時に変換するためのXDTファイルが含まれています。この方法では、csprojファイルの一部である必要はありません。

<files>セクションを(csprojまたはfilesセクションの代わりに)追加ファイルの包括的なリストとして処理するこのオプションがnuget cliに追加されているのを見たいと思います。

関連する問題