2012-03-09 2 views
4

私は.csprojからNuGetパッケージを作成しようとしています。私は正常にプロジェクトをコンパイルし、出力フォルダにはすべての必要なファイル(私のアセンブリとすべての依存関係)が含まれています。しかし、NuGetは、.csprojによって作成されたアセンブリをパッケージに入れているだけで、その依存関係は存在しません。私のコマンドラインは次のようになります。NuGetパックは、出力ディレクトリ内のすべてのファイルをパッケージしていません。私は何が欠けていますか?

nuget pack MyProject.csproj -Property Configuration=Release 

と私の結果.nupkgファイルはlibフォルダに私のアセンブリを持っています。私はNuGetを他のプロジェクトでもうまく動作させることに成功しましたが、このプロジェクトではEnterprise Libraryのログブロックを参照していますが、NuGet経由では取得できませんでした。それが私の問題と関連しているかどうかはわかりません。

なぜそれが依存を拾っていないのかについての考えはありますか?

+1

私はここで何が起こっているかについてもっと学びました。どうやらリビジョン1360では、ProjectFactory.csが出力ディレクトリ内のすべてのファイルを取得するのではなく、出力ディレクトリからプロジェクト出力を取得するだけに変更されました。私の他のパッケージは純粋な愚かな運がなかったことが判明しました。そのような場合、私の依存関係の私の名前は私のプロジェクトの結果と同じ文字列で始まったばかりです。 – supwar

+0

私は単に不足している依存関係を。nuspecはを使用していますが、それはプロジェクトの依存関係が変更された場合、私の.nuspecを手動で更新する必要があることを意味します。より良い方法が必要です。私はここで何が欠けていますか?これらの依存関係がNuGetに由来しない場合、特定のパッケージに必要な依存関係がすべて存在することを確認するために、他の人は何をしますか? – supwar

+1

設計上、出力ディレクトリのすべてを取得するのは正しくないので、我々はそれほど悪くないものを選択しました。プロジェクトによっては、すべての出力バイナリを同じフォルダに格納するものがあります(特に保守しているプロジェクト)。 – davidfowl

答えて

4

nuspecファイルを自動的に最新の状態に保つ必要がある場合、MSBuildからnuspecの作成を自動化するために使用できるツールがいくつかあります。 /アップデート。初期状態では、MSBuildはXMLを更新または変換できるいくつかのタスクを提供しており、MSBuildコミュニティタスクを使用して最初のnuspecをカスタマイズしました。たとえば、デフォルトのnuspecには必要のないほんの一部の行が含まれているので、XmlUpdateタスクを使用してそれらを削除します。

私は非ヌゲット参照のためにcsprojファイルをスキャンしていませんが、少し研究してその可能性が高いと思います。

Creating Packages with NuGet the MSBuild Way - この記事ではNuGetパッケージのタイプと大きく異なるため、NuGpecの基本的なアップデートがいくつか含まれています。すでに自動化する方法を知っています。

Manage Your MEF Parts With Nuget - この記事では、MEFパーツをランタイムのみの参照として配布するための、より複雑なアップデートが含まれています。

MSBuildを使いたくない場合や、1338より前のバージョンのProjectFactory.csから好きな動作を取り戻したい場合、NuGetはMEFを使用してサードパーティの拡張機能をサポートしています。あなたは、ソースコントロールに移動し、あなたが好きな以前のコードをつかんで、その動作を提供するカスタムコマンド(例えばcustompack)を作成することができます。私は、これはNuGetの本当にクールな側面ですが、私はまだそれを自分自身をプレイしていないと思います

nuget custompack MyProject.csproj -Property Configuration=Release

:次に、あなたはそうのようなコマンドラインからそれを使用することができます。

Extend NuGet Command Line

ダビデはシナリオがあなたのために正しいかどうNuGetは、このシナリオをサポートするように設計されていないことを言及していても、あなたはこのルートを行くことができますので:ここでそれを行う方法について説明します記事ですお客様のニーズに合わせてNuGetを拡張します。

+0

NuGetコマンドラインを拡張してくれてありがとうございました。私はそれが選択肢だったことを知らなかった – supwar

関連する問題