次のことを試してください。
1).csprojの名前と一致するように.nuspecの名前を変更します。
プロジェクトの場合: MyLib.csproj
MyLib.nuspecの名前をMyLib.csproj.nuspecに変更します
2).nuspecファイルを次のように変更します。
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<version>$version$</version>
<authors>$author$</authors>
<id>$id$</id>
<title>$id$</title>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<summary>$description$</summary>
</metadata>
</package>
ここでは、ジョブはNugetの「$ version $」トークン(およびその他)によって実行されます。
その他のトークンと情報については、このNugetの記事を参照してください。
3).csproj.nuspecファイルを配置するすべてのプロジェクトで次のビルド後イベントを使用します(Enterキーを削除してください)。
mkdir "$(SolutionDir)GeneratedPackages"
"$(SolutionDir).nuget\nuget.exe" pack "$(ProjectPath)"
-OutputDirectory "$(SolutionDir)GeneratedPackages"
-basepath "$(SolutionDir)$(ProjectName)\$(OutDir)"
ソリューションC:\ MySolution \ MyLib.slnとプロジェクトがc:\ MySolution \ MyLib \ MyLib.csprojにある場合、.nuspecファイルはc:\ MySolution \ MyLib\MyLib.csproj.nuspecとPostBuildである必要があります。イベントコマンドは次のようになります。
mkdir "C:\MySolution\GeneratedPackages"
"C:\MySolution\.nuget\nuget.exe" pack "C:\MySolution\MyLib\MyLib.csproj"
-OutputDirectory "C:\MySolution\GeneratedPackages"
-basepath "C:\MySolution\MyLib\bin\debug\"
nuget.exeへのパスを修正します。私の場合、Nugetの「ビルド時に欠落している依存関係を自動再生成」を使用しており、ソリューションの.nugetフォルダーの下にローカルコピーがあります。
.nuspecファイルを使用してnugetを呼び出しているのではなく、.csprojを使用して直接呼び出していることに注意してください。
この戦略には、パッケージのインストール時にNugetが作成するpackages.xmlで宣言されたすべてのプロジェクト依存関係も含まれます。(自動的に、ビルドするたびに)
そして、あなたは完了です!次に、でアセンブリとファイルのバージョンを変更します
プロジェクト>プロパティ>アセンブリ情報
重要: $author$および/または$description$トークンを設定する場合は、ここにアセンブリの会社フィールドと説明フィールドも入力してください。問題が発生した場合は、$author$および/または$description$トークンを削除して、コンパイルを再試行してください。
プロジェクトをビルドすると、/GeneratedPackagesフォルダーにプロジェクトのプロパティで設定したバージョンのMyLib.XXXXnupackが表示されます。依存関係を設定すると、パッケージの依存関係として自動的に含まれていることがわかります。
この戦略をJenkinsCIサーバーで使用して、ソリューションを自動的に構築し、GeneratedPackagesからカスタムNugetServerにパッケージをコピーしています。
ビルド後のイベントを完了することもできます
nuget push
生成されたパッケージをNugetサーバーに送信するには
リリースの問題:
コメントで述べたように、Nuget.exeがRELEASEモードでパッケージを生成できないという問題があります。
それを修正するためにこれを行います:
このスクリプトを使用するすべてのプロジェクトについて:
- プロジェクトのプロパティ>ビルド
- [構成]ドロップダウンで、[すべての構成]を選択します
- [出力]セクションで、[出力パス:]フィールドを変更します。たとえば、現在「bin」を使用しています(キュートなし)。