我们刚为Silverlight应用程序添加了专用的测试服务器。我们正在将所有应用和服务的完整副本部署到测试服务器上。我们遇到的问题是,我们需要在部署时手动更新ServiceReference.ClientConfig,指向适当的服务器(即测试或实时)。
我确信这是一个常见问题。什么是“最佳实践”解决方案?
答案 0 :(得分:3)
我正在使用这种方法:
http://www.funkymule.com/post/2010/03/08/XML-Transform-on-Silverlight-ClientConfig-Files.aspx
这很简单,工作正常。
答案 1 :(得分:1)
我会以编程方式更改silverlight应用程序中端点的主机名,具体取决于从主机页面传递到SL应用程序的特定参数(当然,这意味着在部署测试时,您必须在不同的页面上托管应用程序服务器 - 或者您可以“动态”编辑主机页面作为部署脚本的一部分。)
例如:在测试页面上:
<param name="initParams" value="testServer=myhost.com"/>
然后在Silverlight应用程序中,您将读取testServer参数(您在Application_Startup事件中收到initParams哈希表)并以编程方式将主机名设置为您收到的内容。您将需要某种集中式工厂用于远程代理,否则您将不得不在几个不同的地方替换主机名。
另外,我只会这样做#if DEBUG(或者甚至更好地定义在实际部署之前将被删除的另一个编译常量),因此不存在将其用于任何恶意目标的风险。
答案 2 :(得分:1)
我通常在我的SL Web项目中创建一个Configuration文件夹,其中包含我打算将应用程序发布到的每个位置的ServiceReferences.ClientConfig(ServiceReferences.ClientConfig.dev,ServiceReferences.ClientConfig.test,ServiceReferences.ClientConfig.prod)。
然后我为每个环境(dev,test,prod)创建解决方案配置,并将SL app build事件设置为:
xcopy /R /Y $(ProjectDir)Configuration\ServiceReferences.ClientConfig.$(ConfigurationName) $(ProjectDir)ServiceReferences.ClientConfig
在发布之前,我只需要选择配置,构建和发布