TEL:400-8793-956
当前位置:程序、服务器

转换为 VB.NET 的 Web 服务中的“无法加载类型”

提问者: 近期获赞: 浏览人数: 发布时间:2022-03-20 13:17:49

 问:我使用 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 文件中删除命名空间声明
上一篇: 带有两个表的 SQL 查询 / 困难
下一篇: 如何在 Borland StarTeam 中获得特定标记版本的文件夹?