2008-09-12 24 views
1

J'ai écrit un simple service Web en C# en utilisant SharpDevelop (que je viens d'obtenir et que j'aime)."Impossible de charger le type" dans le service Web converti en VB.NET

Le client le voulait en VB, et heureusement, il existe une fonctionnalité Convert To VB.NET. C'est bien. Traduit tout le code, et il construit. (Je suis un gars « Bloc-notes » pendant une longue période, afin que je puisse sembler un peu vieillot.)

Mais je reçois cette erreur lorsque je tente de charger le service maintenant. J'ai supprimé les corbeilles et j'ai reconstruit, et j'ai recherché google (et stackoverflow). J'ai parcouru les fichiers de projet pour les restes de C#.

Des idées?

Répondre

1

Dans VB.NET, les déclarations d'espace de noms sont relatives à l'espace de noms par défaut du projet. Par conséquent, si l'espace de noms par défaut du projet est défini sur X.Y, les échanges entre Namespace Z et End Namespace se feront dans l'espace de noms X.Y.Z. En C# vous devez fournir le nom complet de l'espace de noms, quel que soit l'espace de noms par défaut du projet. Ainsi, si le projet C# avait l'espace de noms par défaut X.Y, les fichiers CS incluraient toujours la déclaration namespace X.Y. Après la conversion en VB, si l'espace de noms par défaut et les déclarations d'espace de noms dans les fichiers restent les mêmes, vous obtenez des classes dans l'espace de noms X.Y.X.Y. Donc dans votre cas, la classe Soap est maintenant dans l'espace de noms flightinfo.flightinfo. Ainsi, il existe trois solutions possibles:

  • changer le fichier asmx à

  • supprimer l'espace de noms par défaut du projet

  • supprimer les déclarations d'espace de noms des fichiers vb
+0

Vous avez raison! J'ai travaillé autour de cela en envoyant les fichiers source au client (qui a créé son propre projet et n'a eu aucun problème). Mais j'ai remarqué ta réponse et l'ai essayée. J'ai dû préfixer le nom de la classe avec le nom du projet, qui, comme vous le dites, est l'espace de noms par défaut (implicite). Merci! – harpo

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

Quel est le nom de votre cours?

+0

flightInfo.Soap - même que précédemment. Cela a été généré par le modèle de service Web. – harpo

+0

Et l'assemblage est toujours flightInfo? – FlySwat

+0

oui. Assez bizarre, hein? – harpo

0

Le problème peut être dû à VB.NET & Projets C# utilisant différentes conventions de dénomination pour les assemblys de projet et la manière dont l'espace de noms de projet est utilisé. Du moins, je commencerais à chercher.