2008-09-12 5 views
1

Ich schrieb einen einfachen Web-Service in C# mit SharpDevelop (die ich gerade bekam und ich liebe)."Konnte Typ nicht laden" in Web-Service konvertiert zu VB.NET

Der Client wollte es in VB, und zum Glück gibt es eine Convert To VB.NET-Funktion. Es ist großartig. Übersetzte den ganzen Code, und es baut. (Ich war lange Zeit ein "Notepad" Typ, so dass ich ein bisschen altmodisch erscheinen mag.)

Aber ich bekomme diesen Fehler, wenn ich versuche, den Dienst jetzt zu laden.

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

Source Error: 

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

Ich habe die Bins gelöscht und neu aufgebaut, und ich habe google (und Stackoverflow) gesucht. Ich habe die Projektdateien nach Resten von C# durchforstet.

Irgendwelche Ideen?

Antwort

1

In VB.NET sind Namespacedeklarationen relativ zum Standardnamespace des Projekts. Wenn also der Standardnamespace für das Projekt auf X.Y festgelegt ist, befindet sich Everythyng zwischen Namespace Z und End Namespace im X.Y.Z-Namespace. In C# müssen Sie den vollständigen Namespace-Namen angeben, unabhängig vom Standardnamespace des Projekts. Wenn also das C# -Projekt den Standard-Namespace X.Y hatte, enthielten die CS-Dateien immer noch die namespace X.Y Deklaration. Wenn nach dem Konvertieren in VB sowohl der Standardnamespace als auch die Namespacedeklarationen in den Dateien gleich bleiben, erhalten Sie Klassen im X.Y.X.Y-Namespace. In Ihrem Fall befindet sich die Soap-Klasse jetzt im Namespace flightinfo.flightinfo. So gibt es drei mögliche Lösungen:

  • Änderung der asmx Datei zu

  • den Standard-Namespace aus dem Projekt entfernen

  • die Namespace-Deklarationen aus den vb Dateien entfernen
+0

Sie haben Recht! Ich hatte daran gearbeitet, indem ich die Quelldateien an den Client schickte (der sein eigenes Projekt erstellt hatte und kein Problem hatte). Aber ich habe deine Antwort bemerkt und es ausprobiert. Ich musste dem Klassennamen den Projektnamen voranstellen, der wie gesagt der standardmäßige (implizite) Namensraum ist. Vielen Dank! – harpo

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

Wie lautet der Name Ihrer Klasse?

+0

flightInfo.Soap - wie zuvor. Dies wurde tatsächlich von der Web-Service-Vorlage generiert. – harpo

+0

Und die Montage ist immer noch Fluginfo? – FlySwat

+0

ja. Ziemlich komisch, was? – harpo

0

Das Problem kann durch VB.NET & C# -Projekte verursacht werden, die unterschiedliche Namenskonventionen für Projektassemblies verwenden und wie der Projektnamespace verwendet wird. Zumindest würde ich anfangen zu suchen.

Verwandte Themen