2008-09-12 14 views
1

Я написал простой веб-сервис на C#, используя SharpDevelop (который я только что получил, и я люблю).«Не удалось загрузить тип» в веб-службе, преобразованной в VB.NET

Клиент хотел его в VB, и, к счастью, есть функция Convert To VB.NET. Здорово. Перевел весь код, и он строит. (Я долгое время был парнем «Блокнота», поэтому может показаться немного старомодным.)

Но я получаю эту ошибку, когда пытаюсь загрузить службу сейчас.

 
Parser Error Message: Could not load type 'flightinfo.Soap' from assembly 'flightinfo'. 

Source Error: 

Line 1: <%@ WebService Class="flightinfo.Soap,flightinfo" %> 

Я удалил бункеры и перестроил, и я искал google (и stackoverflow). Я просмотрел файлы проекта для любых остатков C#.

Любые идеи?

ответ

1

В VB.NET объявления пространства имен относятся к пространству имен по умолчанию проекта. Поэтому, если для пространства имен по умолчанию для проекта установлено значение X.Y, вещественное число от Namespace Z и End Namespace будет находиться в пространстве имен X.Y.Z. В C# вы должны указать полное имя пространства имен, независимо от пространства имен по умолчанию для проекта. Итак, если проект C# имел пространство имен X.Y по умолчанию, CS-файлы все равно будут содержать объявление namespace X.Y. После преобразования в VB, если пространство имен по умолчанию и объявления пространства имен в файлах остаются такими же, вы получаете классы в пространстве имён X.Y.X.Y. Итак, в вашем случае класс Soap теперь находится в пространстве имен flightinfo.flightinfo. Таким образом, есть три возможных решения:

  • изменить файл ASMX в

  • удалить пространство имен по умолчанию из проекта

  • удалить объявления пространств имен из Vb файлов
+0

Вы правы! Я работал над этим, отправив исходные файлы клиенту (который создал свой собственный проект и не испытывал никаких проблем). Но я заметил ваш ответ и попробовал. Я должен был префикс имени класса с именем проекта, которое, как вы говорите, является по умолчанию (неявным) пространством имен. Благодаря! – harpo

0
<%@ WebService Class="flightinfo.Soap,flightinfo" %> 

Как зовут ваш класс?

+0

flightInfo.Soap - то же, что и раньше. Это было фактически создано шаблоном веб-службы. – harpo

+0

И сборка все еще находится в полете? – FlySwat

+0

yep. Довольно странно, да? – harpo

0

Проблема может быть вызвана проектами C# VB.NET & C#, использующими различные соглашения об именах для сборки проектов и как используется пространство имен проектов. По крайней мере, я бы начала смотреть.