【问题标题】:Cannot create a proxy with SlSvcUtil.exe无法使用 SlSvcUtil.exe 创建代理
【发布时间】:2012-03-24 03:05:12
【问题描述】:

我正在尝试按照 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。

有什么想法吗?

【问题讨论】:

  • 根据 MT 支持,安装 Silverlight 5 时可能会出现问题。我能够在另一台没有安装 Silverlight 5 的机器上创建代理。

标签: xamarin.ios silverlight-3.0


【解决方案1】:

当多个 SDK(WP7.1、WP7.1.1、Silverlight 3、4 或 5)安装在同一台计算机上时,这似乎是一个问题。 solution 是通过将 SlSvcUtil.exe.config 文件添加到 SlSvcUtil 所在的同一文件夹中来告诉 SlSvcUtil 使用正确的程序集和 .net 版本,在我的例子中是 %PROGRAMFILES(x86)%\Microsoft SDKs\Silverlight \v3.0\工具:

<?xml version ="1.0"?> 
<configuration> 
 <startup> 
  <supportedRuntime version="v4.0"/> 
  <supportedRuntime version="v2.0.50727"/> 
 </startup> 
</configuration>

【讨论】:

    【解决方案2】:

    为什么不直接用 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 创建服务引用时所做的。

    【讨论】:

    • 顺便说一句,System.Runtime.Serialization DLL 在这里 - %PROGRAMFILES%\Microsoft SDKs\Silverlight\v3.0\Libraries\Client
    • 通过 VS 添加它可以工作,但它会生成带有 Config 的代理,我无法在 MonoTouch 中使用 config。
    • 顺便说一句,JSON DLL 是我提到的.. 常规的位于核心运行时的 Silverlight 文件夹(不是 SDK)中(我很惊讶 MonoTouch 没有附带这个...... )
    • @JonasStawski 如果 Mono WCF 实现无法使用生成的 *.config 文件,您将需要在代码中手动定义配置。 Mono 的 WCF 支持仍应被视为实验性的,您应该尽可能在移动设备上使用异步 REST 调用 :-) 另外,请记住 MonoTouch 只能使用 BasicHttpBinding 传输。
    • @Anuj 我们正在以编程方式创建端点,但问题与代理创建有关
    猜你喜欢
    • 2011-02-22
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    相关资源
    最近更新 更多