2012-01-04 13 views
2

Silverlight 4アプリケーションを開発しており、テスト目的でローカルにアプリケーションを展開するときにいくつかの機能を有効/無効にしたいと考えています。Silverlightアプリケーションがローカルで実行されているかどうかを確認する方法?

たとえば、アプリケーションをローカルでテストすると、統計情報の収集が無効になり、データベースに「ライブ」メトリックのスパムが発生しないようにします。

私が現在行っていることは、ホスト名を調べることです。例えば、私のApp.xaml.csファイルに:

if (HtmlPage.Document.DocumentUri.Host == "localhost") 
{ 
    // Do stuff only when deployed locally 
} 

これを行うには良い方法はありますか?

+0

機能をデバッグモード(リリースではない)でのみ有効にし、テスト目的でデバッグモードでローカルに展開するのはなぜですか?それ以外のリリースモードでは、どうしてですか? – GaussZ

+0

@ GaussZリリースビルドをローカルでプロダクションサーバーに展開する前に、リリースビルドをテストすることはしばしばあります。たぶん私は少し編集的です:P それでも、有効な提案です。 – Mathieu

+0

妄想になることは決してありません。 ;)しかし、私はあなたがlocalhostではなくホスト名としてあなたのコンピュータ名を含んでいるかもしれないローカルIISを使ってデバッグするならば、URL以外の本質的な違いがないことを恐れます。 #if DEBUGプリコンパイラスイッチのメリットは、実行するかどうかに応じて速度が若干向上することです。 – GaussZ

答えて

1

私は例mysilverlightpage.htmlmyslpage.notracking.htmlのために、私のコードをテストするための2つのHTMLページを作成します。その後myslpage.notracking.htmlのオブジェクトembedタグで、私はinitparam追加:私のコードで次に

<param name="InitParams" value="noTracking=true" /> 

を、私は私のInitParams paramsは上のチェックを行います。

if (!App.Current.Host.InitParams.ContainsKey("noTracking") || bool.Parse(App.Current.Host.InitParams["noTracking"]) == false) 
{ 
    // perform tracking here 
} 

を今では確認することが可能ですトラッキング指標を無効にすることなく、機能のリリースバージョン。

+0

興味深い、私はあなたの考えを試してみると思います。ありがとう! – Mathieu

0

別の解決方法は、Silverlightプロジェクトの[ビルド]タブ(例:LOCAL)で独自の条件付きコンパイルシンボルを定義してから#ifステートメントを使用することです。あなたのアプリを動かす準備ができたら、シンボルを取り出してください。

関連する問題