VS 2008 ポスト ビルド ステップの面白いビジネス
-
01-07-2019 - |
質問
さて、私のプロジェクトの内訳は次のとおりです。「Scripts」サブフォルダーを持つ Web プロジェクトがあります。このフォルダーには、いくつかの JavaScript ファイルと JSMin.exe のコピー、およびいくつかのファイルで JSMin.exe を実行するバッチ ファイルが含まれています。「call "$(ProjectDir)Scripts\jsmin.bat"」というビルド後のステップを設定しようとしました。ビルドを実行すると、バッチファイルは常に「コード1で終了」されます。これは、Visual StudioまたはMSBuildコマンドラインを介して行われます。Scripts フォルダーからバッチ ファイルを手動で実行できますが、期待どおりに動作するようですが、ここで何が問題なのかわかりません。$(ProjectDir)Scripts\jsmin.bat 呼び出しは引用符で囲まれています。これは、$(ProjectDir) にはスペースが含まれる可能性があるためです (実際、私のマシンではスペースが含まれています)。この時点ではどうすればいいのかわかりません。ビルド後のステップとしてバッチファイルの内容を削除しようとしましたが、それも機能しないようです。
理想的には、ビルド後のステップまたはビルド前のステップを通じてこの問題を解決し、コードをデプロイするときにビルド マネージャーが追加のステップを実行する必要がないようにしたいと考えています。
ありがとう!
解決
カスタム ビルド ステップにエラー コードを返すものが含まれている場合は、以下を追加できます。
exit 0
ビルドステップの最後の行として。これにより、ビルドが失敗するのを防ぎます。
他のヒント
私が使用しているこれに対する実用的な解決策:
CD $(プロジェクトディレクトリ)
DoStuff.bat
もちろん、プロジェクト ディレクトリにファイルがある場合は、呼び出しコマンドなどは必要ありません。
スクリプトまたはバッチ ファイルは内部でパス参照を使用していますか?
パス参照が完全修飾されていない場合、バッチ ファイルが正しく動作しないことがわかりました。
例:DoStuff.bat というバッチ ファイルは、echo コマンドを使用してテキスト ファイルを追加します。
これはそうなります ない .bat ファイル内で作業します。
echo "test" >>"test.txt"
これ 機能します .bat ファイル内:
echo "test" >>"C:\Temp\CompileTest\test.txt"
ビジュアルスタジオ ビルド後のイベント コマンド ライン これですか:
call "C:\Temp\CompileTest\DoStuff.bat"
どういうわけか、.bat ファイルがどのように終了するかの詳細はよくわかりませんが、JSMin またはバッチ ファイルの実行がゼロ以外の戻りコードで終了します。
スクリプトを直接実行してみましたか(つまり、JSMin.bat 経由ではなく) ポストビルドの一部として?
編集:ハルグリムがそれを持っているようだ。
この問題に戻ります (少し他の火災に移らなければなりませんでした)
@Jonathan Webb - いくつかのアイデアを試しましたが、成功しませんでした。実際、他の内部プロジェクトでも同様のこと (ビルド後のタスクを使用して外部プログラムを呼び出す) を行っていることがわかりました。私は、これが jsmin.exe ツールとの相互作用、または私の側の愚かなエラーであると信じがちです。
すべてが失われたわけではありませんが、別の開発者が YUI Compressor とその .NETでの実装. 。.csproj を手動で操作することで、目標を達成することができ、さらにいくつかの目標 (CSS 圧縮を含む) を達成することができました。