Не удается создать прокси с SlSvcUtil.exe - PullRequest
2 голосов
/ 06 марта 2012

Я пытаюсь следовать этому руководству, чтобы создать прокси-класс для моей службы WCF для проекта MonoTouch, но когда я запускаю команду

C: \ Program Files \ Microsoft SDKs \ Silverlight \ v3.0 \ Tools \ SlSvcUtil.exe / noConfig http://yourdomain/yourservice/wsdl

Я получаю следующую ошибку:

Ошибка: не удалось загрузить файл или сборку 'C: \ Program Files (x86) \ Microsoft Silverlight \ 5.0.61118.0 \ System.Runtime.Serialization.dll' или одну из ее зависимостей. Эта сборка создается средой выполнения, более новой, чем текущая загруженная среда, и не может быть загружена.

Поиск в C: \ Program Files (x86) \ Microsoft SDKs \ Silverlight \ v3.0 \ Libraries \ Client не имеет System.Runtime.Serialization.dll. Возможно, это проблема, и он пытается использовать последнюю версию .net dll, которая не будет работать с Silverlight.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 22 мая 2012

Кажется, это проблема, когда на одном компьютере установлено несколько SDK (WP7.1, WP7.1.1, Silverlight 3, 4 или 5).Решение состоит в том, чтобы указать SlSvcUtil использовать правильную сборку и версию .net, добавив файл SlSvcUtil.exe.config в ту же папку, где живет SlSvcUtil, что в моем случае равно% PROGRAMFILES (x86)% \Microsoft SDK \ Silverlight \ v3.0 \ Tools:

<?xml version ="1.0"?> 
<configuration> 
 <startup> 
  <supportedRuntime version="v4.0"/> 
  <supportedRuntime version="v2.0.50727"/> 
 </startup> 
</configuration>
1 голос
/ 06 марта 2012

Почему бы просто не создать новый проект Silverlight 3.0 с Visual Studio 2010, а затем добавить службу способом Visual Studio ..

Затем вы можете получить сгенерированный код и импортировать этот код в MonoTouch ..

Что касается командной строки, держу пари, она делает что-то вроде этого:

slsvcutil http://yourdomain.com/yourservice/wsdl / edb /namespace:"*,SilverlightApplication1.ServiceReference1" /ct:System.Collections.ObjectModel.ObservableCollection`1 / r: "% PROGRAMFILES% \ Справочные сборки \ Microsoft \ Framework \ Silverlight \ v3.0 \ System.Windows.dll"

По крайней мере утилита командной строки сообщает, что именно так она и поступает при создании ссылки на службу из VS.

...