“System.Runtime.Serialization”。您是否缺少程序集引用?“添加Web引用后

时间:2016-08-04 23:04:07

标签: c# xamarin portable-class-library web-reference

我有一个共享PCL项目的iOS / Android Xamarin项目。

我已根据Xamarin's Tutorial通过ASMX向PCL添加了一个Web引用。本教程没有说明如何进入“添加Web引用”窗口,但我们通过右键单击我们的PCL项目并转到Add->Web Reference找到它。

在添加Web引用时,我得到一个大约500行的Reference.cs文件,该文件被添加到PCL中。

然而,在编译时,无论是iOS还是Android,我都会遇到以下错误:

  

Reference.cs(74,74):错误CS0234:类型或命名空间名称IExtensibleDataObject' does not exist in the namespace System.Runtime.Serialization'。你错过了装配参考吗? (CS0234)(MyProject)

很明显,我需要添加System.Runtime.Serialization程序集引用。但是,我无法弄清楚如何做到这一点,我花了几个小时寻找文档或任何相关的解决方案。大多数帖子问题最多只能出现问题。

这个forum post引用了这个问题,但除了三年前被认为“修复”之外,没有提供任何解决方案。

如果您使用“添加文件”添加代理,前面提到的教程会引用“添加引用...”对话框以添加System.Web.Services.dll。但是,我无法在IDE中的任何位置找到此对话框。

右键单击引用时,我确实找到了“编辑引用”。这产生了一个带有这些标签的窗口:

enter image description here

猜测需要在这里添加程序集我搜索它,但什么都没找到。显然没有办法添加随IDE打包的程序集,您应该“只知道”在哪里找到它们。搜索文档证明没有结果。

通过其中一个示例项目,我能够在/Library/Frameworks/Mono.framework/Versions/4.4.2/lib/mono/xbuild-frameworks/.NETPortable/v4.5/Profile/Profile78/System.Runtime.Serialization.dll找到.dll文件,并通过.NET Assembly选项卡手动添加它。

一位同事也尝试通过NuGet添加引用。

不幸的是,在尝试任何一种方法之后,编译错误仍然存​​在。

另外值得注意的是,似乎ToDoASMX示例项目和包含System.Runtime.Serialization.dll的文件夹都有对教程提到的System.Web.Services.dll的任何引用。

1 个答案:

答案 0 :(得分:2)

我认为这些文档指的是在Xamarin.iOSXamarin.Android中使用它们(至少对于.asmx文档)。您可以通过右键点击System.Runtime.Serialization / References项目中的Xamarin.iOS转到Xamarin.Android,转到Edit References,然后转到All标签它应该列在BCL (Base Class LIbrary)下面。您可能需要在Interface中使用基于PCL的模式来调用相应的本机Web服务。您也可以尝试将.asmx打包成REST service并使用HttpClient

查看此示例项目(https://developer.xamarin.com/samples/xamarin-forms/WebServices/TodoASMX/)会在Interface中使用ISoapService并在本机项目中实现,从而显示上述基于PCL的模式。您会看到每个项目(Droid/iOS)都包含Web Reference。 PCL纯粹是在调用代码。

考虑到围绕它们构建的框架,使用.asmx的更多限制。使用WCFREST可以更好地直接从PCL消费。但请注意,PCL将被NetStandard库味道替换。

相关问题