我不知道这是否是一个错误/功能,但我需要找到一种方法让它工作。
要重新创建,请使用 VS2012,打开一个启用 RIA 服务的新 SL5 项目。创建另一个项目,添加一个简单的 WCF 服务(或启用 SL 的 WCF)并添加一个接受或返回一个简单对象的方法(我有一个带有一个字符串属性的对象)。尝试将此作为服务引用添加到您的 SL 项目。您将在警告中收到此错误信息:
Custom tool warning: No endpoints compatible with Silverlight 5 were found. The generated client class will not be usable unless endpoint information is provided via the constructor.
实际上并没有生成任何生成的代码。
我发现如果我从服务方法中删除对象并改用简单的字符串/int/bool,则添加引用就好了。此外,如果我将相同的服务添加到没有 RIA 的常规 SL 应用程序中,一切都会像您期望的那样工作。一旦我在该服务正在运行的应用上启用 RIA,并更新服务引用,生成的代码就会再次消失。
我记得这曾经可以工作,因为我的项目同时使用了 RIA 和外部 WCF 服务。这是一个新的 VS2012 东西吗?有没有办法解决这个问题?
谢谢,
艾尔
最佳答案
我可以重复这个问题,而且它似乎只有在 Silverlight 客户端在其引用的程序集中具有 2 个 System.ServiceModel.DomainServices.Client 和 System.ServiceModel.DomainServices.Client.Web 程序集时才会发生。并且仅当它以 SL 5 为目标时。
如果您的情况允许,我建议您尝试两种解决方法:
1) 将 Silverlight 应用程序更改为面向 Silverlight 4,而不是 5,或者 2) 右键单击服务引用并要求配置它。 单击复选框以“在指定的引用程序集中重用类型” 并选择所有集合除了上面提到的2个。
这似乎是与 SL 5 或 VS2012 相关的错误。如果我找到更满意的答案,我会重新发布。
关于wcf - 带有 RIA WCF 项目的 Silverlight 无法添加常规 WCF 服务引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13266508/