15

Visual Studio 2010 と Visual Studio 2012 の両方でこれを実行しようとしました。Gruntfile.js ファイルがプロジェクトのルートにある場合、ポスト ビルド イベントのコマンド ラインから「grunt」コマンドを実行できます。問題。

grunt or grunt.cmd

ただし、サブディレクトリにある場合

$(ProjectDir)Public\grunt or $(ProjectDir)Public\grunt.cmd

それは私にこのエラーを与えます

The command "c:\web\Public\grunt.cmd" exited with code 9009.

私はこれを研究してきましたが、そこにはあまり助けがありません。「grunt」を呼び出すだけでなく、「grunt.cmd」を使用する必要があることを grunt のドキュメントで見つけましたが、それはあまり役に立ちません。

4

4 に答える 4

13

何が起こっているのかというと、実際には $(ProjectDir)Public\ に存在しない grunt の正確なパスを指定しているということです。コマンド プロンプトでそのディレクトリにいて「grunt」と入力すると、grunt が存在するディレクトリを含むようにパス環境変数を設定しているため、実行されます。

幸いなことに、VS のビルド後のコマンドはコマンド ウィンドウのように機能するため、これをビルド後のコマンドに入れることができます。

CD $(ProjectDir)Public\
grunt

そして、それはうまくいくはずです (デフォルトの grunt タスクが定義されていると仮定します)。

于 2013-08-29T20:05:56.867 に答える
3

Visual Studio を開いている場合:

  1. インストールされたノード パッケージ マネージャー (npm) と grunt
  2. 次に、grunt コマンドを含むビルド前後のコマンドを実行しようとしました。

ビルドは単に「コード 9009 で終了しました」というメッセージで失敗します。(「grunt コマンドが何かわからない」という意味)

この状況を解決するには、Visual Studio を閉じて再度開くだけです (@longda がコメントで述べたように)。すべてが正常に機能します。

VS 2013 Premium と最新バージョンの npm/grunt を使用しています。

于 2015-05-07T15:20:03.307 に答える
3

以下に示すように、タスクランナーを使用してポストビルドとして実行できます。ビルドを右クリック --> バインディング --> ビルド後またはビルド前の実行に必要かどうかを指定します

于 2015-08-11T22:11:07.137 に答える
0

やや関連して、xcopyがうなり声の後に実行されないという奇妙な問題があり、それらを単一のコマンドとして実行すると修正されました。

cd $(SolutionDir)..\App
grunt release && xcopy "$(SolutionDir)..\App\release" "$(TargetDir)Content\" /Y /E /S
于 2014-04-15T12:29:30.567 に答える