В корне рабочей папки копии сделайте
svn export --force .
Нашел решение в этом блоге.
http://www.andybeaulieu.com/Default.aspx?tabid=67&EntryID=132
Здесь конечная точка службы wcf вычисляется из местоположения приложения silverlight
Могут быть более эффективные способы, которые я готов использовать, но это работает для меня и является гибким.
В вашем веб-приложении Web. config , добавьте переменную в AppSettings и сохраните базовый URL, обратите внимание, что я не сохраняю местоположение файла SVC, я добавлю его позже. Это потому, что у меня есть несколько SVC, на которые я обычно указываю. Вы можете сделать это по-другому.
<appSettings>
<add key="ServiceURI" value="http://localhost:64457/"/>
</appSettings>
На веб-странице моего веб-приложения добавьте параметр InitParms, это позволит вам добавить список ключей, парные значения (разделенные запятыми, которые будут считаны файлом XAP)
<div id="silverlightControlHost">
<object data="data:application/x-silverlight," type="application/x-silverlight-2"
width="100%" height="100%" ID="Xaml1" >
<param name="InitParams" value="ServiceURI=<%= ConfigurationManager.AppSettings("ServiceURI") %>" />
В Silverlight App.xaml.vb загрузите все InitParms в ресурс или куда угодно
Private Sub Application_Startup(ByVal o As Object, ByVal e As StartupEventArgs) Handles Me.Startup
If e.InitParams IsNot Nothing Then
For Each k As Generic.KeyValuePair(Of String, String) In e.InitParams
Me.Resources.Add(k.Key, k.Value)
Next
End If
Затем в любом из моих файлов XAML я может инициализировать службу с настроенным URI, у меня есть такой метод
Private Sub InitializeService()
Dim uri As String = App.Current.Resources("ServiceURI")
If uri Is Nothing OrElse uri = String.Empty Then
'if there is no value added in the web.config, I can fallback to default values
_client = New ServiceClient
Else
'Notice I hardcoded the location of the SVC files in the client and append there here, you may choose not to do this
Dim uri_withservice As String = uri & "svc/secure/Service.svc"
_client = New ServiceClient("CustomBinding_Service", New EndpointAddress(uri_withservice))
End If
End Sub
Отлично, с этими предложениями мне удалось добиться динамического изменения данных WCF ServiceReferences.ClientConfig при запуске приложения с URI службы, считываемым из web.config. Это возможно с помощью «преобразований web.config» в VS2010.
Вот пример web.config.debug, показывающий, как заменяется ServiceURI, когда я выбираю «опубликовать» для своего веб-сайта.
<?xml version="1.0"?>
<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<...>
</connectionStrings>
<appSettings>
<add key="ServiceURI" value="http://my.location.com/myService.svc"
xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
</appSettings>
</configuration>
В моем базовом файле web.config у меня есть тот же ключ / значение, указывающий на локальную службу. Нет необходимости помнить об изменении ServiceURI каждый раз, когда я развертываю для тестирования / производства. Отлично, я давно это искал.