14

個人用と仕事用の両方のクラス ライブラリ用に、ローカルの nuget ライブラリ リポジトリを別々に持っています。

開発中でなくなったライブラリ用の nuget パッケージをいくつか作成しました。プロジェクトがビルドされるとすぐにそれらを自動的に更新する方法がわからないため、これは彼らのためだけに行いました。

すべての作業は、Visual Studio コマンド プロンプトを使用して nuget コマンド ラインで実行されていることがわかりました。そのため、必要な作業を簡単に行うことができます (もちろん、コマンドを完全に知っているはずですが、そうではありません!)

基本的に、プロジェクトのビルド後のイベントで次のタスクを実行したいと考えています。

プロジェクトのビルド時:

  1. プロジェクト dll を特定のフォルダー (nuget パッケージの lib フォルダー) にコピーする
  2. 新しいファイル バージョンの nuspec ファイルの更新 (私のプロジェクトでは、ビルドごとにファイル バージョンが増加しています)
  3. 新しいファイル バージョンで新しい nupkg ファイルを作成する

Phil Haack がこの機能の一部を示していますが、私が知る限り、これはまだプロトタイプです。

したがって、私の要件は上記です。他の誰かがこれを達成しましたか?

4

6 に答える 6

16

選択したソリューションは機能するように見えますが、要件に合ったより簡単なソリューションがあるようです。

プロジェクトのメタデータからデータを読み取る nuspec ファイルを作成できます。このコマンドを使用してこれを行う必要があるのは 1 回だけです。

C:\<Path to project>\nuget spec

これにより、仕様ファイルに「トークン」が作成され、nuget パッケージの作成時にプロジェクトのメタデータに置き換えられます。これには、ファイルのバージョンが含まれます。and を置き換える必要があるのは、すべてのプロジェクトが技術的にそれらを持っていると想定されているためです。

詳細については、http: //docs.nuget.org/docs/creating-packages/Creating-and-Publishing-a-Package#From_a_projectをご覧ください。

それで...

.Net Framework (古い学校) プロジェクトの場合、プロジェクトのビルド後のイベントで次のことができます。

nuget pack "$(ProjectPath)"  
xcopy "$(TargetDir)*.nupkg" "<path where you are hosting your local nuget repo>" /C /Y

(システム PATH で nuget.exe が利用可能であると仮定します)。

.Net Core および Standard プロジェクトの場合、nuget はそれらをパックできません ( https://github.com/NuGet/Home/issues/4491を参照)。代わりに、これをビルド後のステップとして使用します。

dotnet pack "$(ProjectPath)" --no-build --include-source --include-symbols --output "<path where you are hosting your local nuget repo>"

もちろん、ニーズに合わせてオプションを調整できます。コマンド オプションについては、 https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-pack?tabs=netcore2xを参照してください。dotnet pack

于 2013-01-23T20:34:57.843 に答える
5

Jeremy Skinner は、パッケージの自動ビルドを実行して NuGet ギャラリーにアップロードする方法についてのブログ投稿を書きました。ご要望にマッチしていると思います。

基本的に、彼は MsBuild を使用して ( MsBuild Community Extensions UpdateXml タスクを使用して) バージョンを nuspec ファイルに適用し、nuget.exe を呼び出してパッケージ化します。

于 2011-02-25T15:04:28.737 に答える