2017-02-24 17 views
1

私はConfigurationNameに依存して私のためにファイルをコピーするためのポストビルドイベントを既に設定しており、クライアント側のconfig(js)ファイルに "環境変数"を設定できるようにしたい。そのためにはデバッグ情報がでpostbuildイベントでjsファイルを編集する

目に見えるか、アプリケーションを実行している環境に依存しないことができるようにするアプリケーション私はPowerShellスクリプト(ReplaceText.ps1)作成しました:

function replace-file-content([String] $path, [String] $replace, [String] $replaceWith) 
{ 
(Get-Content $path) | Foreach-Object {$_ -replace $replace,$replaceWith} | Out-File $path 
} 

をし、このラインを追加しました私のウェブプロジェクトのビルドイベントをポストしてください。

私は単語を変更するには期待していた
if "$(ConfigurationName)"=="LIVE" (powershell -File "$(ProjectDir)Tools\ReplaceText.ps1" "$(ProjectDir)app\application.config.js" "DEBUG" "LIVE") 

「DEBUG」「LIVE」には、この行が含まれている私のapplication.config.jsファイル内のLIVEビルド構成に対して構築:

$provide.constant('currentEnv', 'DEBUG'); 

ビルドが成功しましたファイルは変更されません。誰かが私が間違っている場所を特定できますか?

私はGulpや他のタスクランナーBTWでこのようなことをすることができますが、別の依存関係を持たずに、VSポストビルドイベント& PSを使用せずにそれをしようとしていました。 :)

乾杯

答えて

1

あなたのPSコードは関数を定義し、それを呼び出す何もありません。スクリプトのパラメータにコマンドラインを変換するためのスクリプトの最初のステートメントとして

使用param

param([String] $path, [String] $replace, [String] $replaceWith) 

(Get-Content -literalPath $path -raw) -replace $replace, $replaceWith | 
    Out-File $path -encoding UTF8 
  • -literalPath - 正しくそれ以外の場合は、ワイルドカードとして解釈[]記号でパスを処理します。
  • -raw - 高速化のためにファイル全体を1つの文字列として読み取ります。
関連する問題