NuGet パックは、出力ディレクトリ内のすべてのファイルをパッケージ化していません。私には何が欠けているのでしょうか?

StackOverflow https://stackoverflow.com//questions/9628624

  •  09-12-2019
  •  | 
  •  

質問

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

nuget pack MyProject.csproj -Property Configuration=Release

そして、結果の .nupkg ファイルには、lib フォルダー内のアセンブリのみが含まれます。NuGet を他のプロジェクトで正常に動作させることができましたが、たまたまこのプロジェクトがエンタープライズ ライブラリのログ ブロックを参照していても、それが NuGet 経由で取得されなかっただけです。それが私の問題に関係しているかどうかはわかりません。

依存関係を検出しない理由について何か考えはありますか?

役に立ちましたか?

解決

nuspec ファイルを自動的に最新の状態に保つ必要がある場合、実際には (ご存知かと思いますが) 単なる XML ファイルなので、MSBuild から nuspec の作成/更新を自動化するために使用できる非常に優れたツールがいくつかあります。MSBuild には、XML を更新または変換できるいくつかのタスクが用意されており、MSBuild コミュニティ タスクを使用して初期の nuspec をカスタマイズしました。たとえば、デフォルトの nuspec には不要なブロイラープレートを含む行がいくつか含まれているため、XmlUpdate タスクを使用してそれらを削除します。

nuget 以外の参照について csproj ファイルをスキャンすることについては調べていませんが、少し調べればおそらく可能だと思います。NuGet 自動化に関する私の経験を説明したブログ エントリへのリンクをいくつか示します。これらは、有利なスタートを切るのに役立つかもしれません。

MSBuild の方法で NuGet を使用してパッケージを作成する - 説明されているパッケージは、NuGet が自動化方法をすでに知っているパッケージのタイプとそれほど変わらないため、この記事には基本的な NuSpec の更新がいくつか含まれています。

Nuget を使用して MEF パーツを管理する - この記事には、実行時のみの参照としての MEF パーツの配布をサポートするための、より複雑な更新がいくつか含まれています。

これを頻繁に行う予定がある場合、MSBuild をいじりたくない場合、または単に 1360 より前のバージョンから気に入っていた動作を戻したい場合 ProjectFactory.cs, NuGet は、MEF を介したサードパーティの拡張機能をサポートしています。ソース管理に移動して、気に入った以前のコードを取得し、カスタム コマンド (たとえば、 custompack) その動作を提供します。次に、次のようにコマンドラインから使用できます。

nuget custompack MyProject.csproj -Property Configuration=Release

これは NuGet の非常に優れた側面だと思いますが、私自身はまだ試したことはありません。その方法を説明した記事は次のとおりです。

NuGetコマンドラインを拡張する

したがって、David が NuGet はこのシナリオをサポートするように設計されていないと述べましたが、シナリオが正しい場合は、 あなた その後、このルートに進み、ニーズに合わせて NuGet を拡張できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top