2012-01-04 64 views
2

我正在開發一個Silverlight 4應用程序,我想啓用/禁用某些功能,用於測試目的本地部署的應用程序時。如何知道我的Silverlight應用程序是否在本地運行?

例如,度量收集會,當我在本地測試應用程序,以避免濫發我的「活」的度量數據庫禁用。

,我現在這樣做的方式是通過檢查主機名。舉例來說,在我的App.xaml.cs文件:

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

有沒有更好的方式來做到這一點?

+0

爲什麼不能啓用僅在調試模式下的功能(而不是發佈)和用於測試目的,但以其他方式發行模式調試模式在本地部署? – GaussZ 2012-01-04 16:42:51

+0

@GaussZ除了在生產服務器上部署之前,我還經常在本地測試我的Release版本。也許我是有點偏執:P 這是一個有效的建議仍然。 – Mathieu 2012-01-04 16:52:49

+0

絕不會傷害到偏執。 ;)但我擔心除Url之外沒有內在差別,如果您使用本地IIS進行調試,它甚至可能包含計算機名作爲主機名而不是本地主機。 #if DEBUG預編譯器開關的優勢在於速度的輕微提高,具體取決於您是否運行了多少個「if」。 – GaussZ 2012-01-04 17:16:15

回答

1

我創建兩個HTML頁面來測試我的代碼,例如mysilverlightpage.htmlmyslpage.notracking.html。然後在myslpage.notracking.html對象嵌入標籤我添加一個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 2012-01-05 16:49:03

0

另一種解決方案是定義在你的Silverlight項目的Build標籤自己的條件編譯符號(如:本地),然後用在#if語句。當你準備好移動你的應用時,拿出符號。 (或者做相反的方式,因爲你實際上是禁用的代碼)

相關問題