【发布时间】:2014-05-17 13:03:10
【问题描述】:
我在 VS2012 中成功使用 ProtoBuf for .Net。当我将在那里开发的库导入 Xamarin Studio 时,智能感知在 ProtoBuf 命名空间上不起作用。它可以编译,但代码中充满了智能感知无法识别的所有成员的红色突出显示。 ProtoBuf 提供了一个 xml 文件来支持智能感知,但是当我尝试将它加载到 Xamarin Studio 的 XML 架构中时,我收到以下错误。
我正在尝试通过在 xml 标头中包含命名空间来修改文件。我正在使用为单声道(完整版)提供的 protobuf-net.xml 文件,但我怀疑是为 MonoDevelop 提供的。 Xamarin Studio 没有开箱即用的工具吗?我有 Xamarin Indie 许可证,所以不使用 VS 进行移动开发。我正在使用 VS 编写一个 TCP 服务器供我的移动应用程序连接,并使用 ProtoBuf 来处理应用程序协议的序列化。
也许我很笨,没有正确使用提供的智能感知 XML 文件。如果我不应该将它添加到 XML 架构中,那么如何使用它来使 Xamarin Studio 智能感知工作? Marc Gravel...我敢肯定你是这个问题的人...
Xamarin Studio 版本 4.2.5(内部版本 0),protobuf-net r668。
--------编辑-------
我通过编辑我的解决方案文件并更改项目的顺序解决了这个问题。由于 Xamarin Studio 不像 VS 那样支持构建顺序,这会导致依赖性问题。有趣的是,以正确的顺序手动编译并没有解决问题,但是智能感知在不导入 protobuf-net.xml 文件的情况下神奇地工作?去图...
感谢 Marc Gravell 在 ProtoBuf 中的出色产品!
--------编辑-----
XML Schema 的输出添加:
System.Xml.Schema.XmlSchemaException:XmlSchema 错误:顶级架构必须具有命名空间http://www.w3.org/2001/XMLSchema 在 System.Xml.Schema.XmlSchema.Read (System.Xml.XmlReader 阅读器,System.Xml.Schema.ValidationEventHandler validationEventHandler)[0x000e7] 在 /private/tmp/source/bockbuild-mono-3.2.6/profiles/mono- mac-xamarin/build-root/mono-3.2.6/mcs/class/System.XML/System.Xml.Schema/XmlSchema.cs:744 在 MonoDevelop.XmlEditor.Completion.XmlSchemaCompletionData.ReadSchema(System.Xml.XmlReader 阅读器)[0x00010] 在 /Users/builder/data/lanes/845/95ac543f/source/monodevelop/main/src/addins/MonoDevelop.XmlEditor/MonoDevelop .XmlEditor.Completion/XmlSchemaCompletionData.cs:465 在 MonoDevelop.XmlEditor.Completion.XmlSchemaCompletionData.ReadSchema (System.String baseUri, System.IO.TextReader reader) [0x00016] 在 /Users/builder/data/lanes/845/95ac543f/source/monodevelop/main/src/addins/ MonoDevelop.XmlEditor/MonoDevelop.XmlEditor.Completion/XmlSchemaCompletionData.cs:481 在 MonoDevelop.XmlEditor.Completion.XmlSchemaCompletionData..ctor (System.String baseUri, System.String fileName, BooleanlazyLoadFile) [0x00067] 在 /Users/builder/data/lanes/845/95ac543f/source/monodevelop/main/src/插件/MonoDevelop.XmlEditor/MonoDevelop.XmlEditor.Completion/XmlSchemaCompletionData.cs:100 在 MonoDevelop.XmlEditor.Completion.XmlSchemaCompletionData..ctor (System.String baseUri, System.String fileName) [0x00000] 在 /Users/builder/data/lanes/845/95ac543f/source/monodevelop/main/src/addins/MonoDevelop .XmlEditor/MonoDevelop.XmlEditor.Completion/XmlSchemaCompletionData.cs:88 在 /Users/builder/data/lanes/845/95ac543f/source/monodevelop/main/src/addins/MonoDevelop.XmlEditor/MonoDevelop 中的 MonoDevelop.XmlEditor.Completion.XmlSchemaCompletionData..ctor (System.String fileName) [0x00000]。 XmlEditor.Completion/XmlSchemaCompletionData.cs:80 在 /Users/builder/data/lanes/845/95ac543f/source/monodevelop/main/src/addins/MonoDevelop 中的 MonoDevelop.XmlEditor.Gui.XmlSchemasPanelWidget.addRegisteredSchema (System.Object sender, System.EventArgs args) [0x00022]。 XmlEditor/MonoDevelop.XmlEditor.Gui/XmlSchemasPanelWidget.cs:379
【问题讨论】:
-
嗯,这很奇怪。智能感知文件只是普通的智能感知——没什么特别的。我完全不知道那是什么,但我确实有一个闪亮的 Xamarin 许可证,我需要好好利用它;添加到我的列表中...
-
将 Protobuf XML 文件添加到 Xamarin Studio 的 XML 架构列表不是代码完成工作所必需的。将 XML 模式添加到 XML 模式列表中只会影响在编写 XML 文件时哪些模式可用于 XML 编辑器中的代码完成。如果程序集 .xml 文件位于 .dll 旁边,Xamarin Studio 应该选择它。所以可能需要更多关于为什么它在你的情况下不起作用的信息。对于使用 Protobuf NuGet 包的简单项目,代码完成似乎没问题。
标签: intellisense protobuf-net xamarin-studio