3

現在、別のプロジェクトで NuGet パッケージとして使用する .NET Core ライブラリに取り組んでいます。

プロジェクト ディレクトリで「dotnet pack」コマンドを使用してプロジェクトを正常にパッケージ化し、そのパッケージを MyGet にアップロードすることができました。

「nuget push」コマンドを使用して、NuGet パッケージをプッシュするこのプロセスを自動化することをお勧めします。

私の問題は、project.json ファイルで定義されている "scripts" プロパティがパックまたはビルドで実行されていないように見えることです。対応するイベントが発生したときにこれらのスクリプトが実行されることを期待していましたが、詳細タグの有無にかかわらず、ビルド時にコンソールに何も出力されないため、効果がないようです。

MyGet が Git リポジトリに基づいてパッケージ フィードを更新できることは理解していますが、現在 project.json を使用しているスクリプトの実行に問題があるかどうかを知りたいです。理想的には、pack が正常に実行された後に nuget push コマンドを使用したいと考えています。

ここに私の project.json ファイルがあります:

{
  "version": "0.0.1",
  "scripts": {
    "postbuild": [ "echo build" ],
    "prebuild": "echo build",
    "postpack": "echo build",
    "postpublish": "echo build",
    "postrestore": "echo build",
    "prepack": "echo build",
    "prepare": "echo build",
    "prepublish": "echo build",
    "prerestore": "echo build"
  },

  "dependencies": {
    "NETStandard.Library": "1.5.0-rc2-24027"
  },

  "frameworks": {
    "netstandard1.5": {
    }
  },
  "buildOptions": {
    "allowUnsafe": false,
    "debugType": "portable",
    "emitEntryPoint": false,
    "xmlDoc": false
  },
  "commands": { },
  "packOptions": {
    "files": {
      "include": "%project:Directory%/bin/release/*.nupkg"
    }
  },
  "configurations": {
    "Debug": {
      "buildOptions": {
        "define": [ "DEBUG", "TRACE" ]
      }
    },
    "Release": {
      "buildOptions": {
        "define": [ ]
      }

    }
  }

}
4

1 に答える 1

8

RC2 は、プリビルドとポストビルドをプリコンパイルとポストコンパイルに置き換えました。

ポストコンパイルを使用して、nupkg を自動的に生成し、パッケージを nuget サーバーにプッシュできます。

"scripts": {
    "postcompile": [
  "dotnet pack --no-build",
  "\"%project:Directory%\\..\\..\\nuget.exe\" push \"%project:Directory%\\bin\\%compile:Configuration%\\%project:Name%.%project:Version%.nupkg\" -source nugetserver -ApiKey key"
]
  }

これにより、プロジェクト ディレクトリに存在する project.json ファイルを使用して dotnet pack が自動的に呼び出されます。次に、nuget パッケージを指定された nuget サーバーにプッシュします。

残念ながら、ビルド構成を指定する変数がないため、上記のパスでは、デバッグ構成とリリース構成を切り替えるときに手動で変更する必要があります。

上記では、%compile:Configuration% を使用して現在のビルド構成を指定しています。

現在のビルド構成に対する答えは 、ASP.NET Core RC2 でソリューション構成に基づいてスクリプトを実行する方法から得られます。

ビジュアル スタジオ 2017

Visual Studio 2017 では、csproj ファイルを編集して次のコマンドを使用することにより、 dotnet nuget push コマンドを使用できます。

<Target Name="PushPackage" AfterTargets="Pack">
    <Exec Command="dotnet nuget push &quot;$(MSBuildProjectDirectory)\bin\$(Configuration)\$(AssemblyName).$(Version).nupkg&quot; -s nugetserver -k apikey" />
</Target>
于 2016-05-23T10:54:45.523 に答える