我正在尝试按照this教程为MonoTouch项目的WCF服务创建代理类,但是当我运行命令时
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不起作用。
有什么想法吗?
答案 0 :(得分:3)
当在同一台计算机上安装多个SDK(WP7.1,WP7.1.1,Silverlight 3,4或5)时,这似乎是一个问题。 solution是告诉SlSvcUtil使用正确的程序集和.net版本,方法是将SlSvcUtil.exe.config文件添加到SlSvcUtil所在的同一文件夹中,在我的例子中是%PROGRAMFILES(x86)%\ Microsoft SDKs \ Silverlight的\ 3.0 \工具:
<?xml version ="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
答案 1 :(得分:1)
为什么不用Visual Studio 2010创建一个新的Silverlight 3.0项目,然后用Visual Studio方式添加服务..
然后您可以获取生成的代码并将该代码导入MonoTouch ..
就命令行而言,我打赌它会做这样的事情:
slsvcutil http://yourdomain.com/yourservice/wsdl / edb /namespace:"*,SilverlightApplication1.ServiceReference1" /ct:System.Collections.ObjectModel.ObservableCollection`1 / r:“%PROGRAMFILES%\ Reference Assemblies \ Microsoft \ Framework \ Silverlight \ v3.0 \ System.Windows.dll”
至少命令行实用程序报告这是从VS创建服务引用时的操作。