问:我使用 SharpDevelop 用 C# 编写了一个简单的 Web 服务(我刚刚得到,我很喜欢)。
客户想要它在 VB 中,幸运的是有一个转换为 VB.NET 功能。这很棒。翻译了所有的代码,它就构建了。(我很长一段时间都是“记事本”的人,所以我可能看起来有点过时。)
但是当我现在尝试加载服务时出现此错误。
解析器错误消息:无法从程序集“flightinfo”加载类型“flightinfo.Soap”。
源错误:
第 1 行:<%@ WebService Class="flightinfo.Soap,flightinfo" %>
我已经删除了垃圾箱并重建了,我搜索了谷歌(和 stackoverflow)。我已经在项目文件中搜索了 C# 的任何残余。
有任何想法吗?
答:在 VB.NET 中,命名空间声明与项目的默认命名空间相关。因此,如果项目的默认命名空间设置为 XY,则介于Namespace Z和之间的一切End Namespace都将位于 XYZ 命名空间中。在 C# 中,您必须提供完整的命名空间名称,而不考虑项目的默认命名空间。因此,如果 C# 项目具有默认命名空间 XY,则 CS 文件仍将包含namespace X.Y声明。转换为 VB 后,如果文件中的默认命名空间和命名空间声明保持不变,您最终会得到 XYXY 命名空间中的类。因此,在您的情况下,Soap 类现在位于 flightinfo.flightinfo 命名空间中。因此,有三种可能的解决方案:
将 asmx 文件更改为
从项目中删除默认命名空间
从 vb 文件中删除命名空间声明