2012-01-04 38 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语句。当你准备好移动你的应用时,拿出符号。 (或者做相反的方式,因为你实际上是禁用的代码)

相关问题