VB.NETに変換されたWebサービスで「型を読み込めませんでした」
-
09-06-2019 - |
質問
SharpDevelop (入手したばかりでとても気に入っています) を使用して、C# で簡単な Web サービスを作成しました。
クライアントは VB での使用を希望していましたが、幸いなことに VB.NET に変換する機能があります。それは素晴らしい。すべてのコードを翻訳し、ビルドします。(私は長い間「メモ帳」派なので、少し古いと思われるかもしれません。)
しかし、今サービスをロードしようとすると、このエラーが発生します。
Parser Error Message: Could not load type 'flightinfo.Soap' from assembly 'flightinfo'. Source Error: Line 1: <%@ WebService Class="flightinfo.Soap,flightinfo" %>
ビンを削除して再構築し、Google(およびスタックオーバーフロー)で検索しました。プロジェクト ファイルに C# の残骸がないか調べました。
何か案は?
解決
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 名前空間にあります。したがって、考えられる解決策は 3 つあります。
asmx ファイルを次のように変更します
プロジェクトからデフォルトの名前空間を削除します
- vb ファイルから名前空間宣言を削除します。
他のヒント
<%@ WebService Class="flightinfo.Soap,flightinfo" %>
あなたのクラスの名前は何ですか?
この問題は、プロジェクト アセンブリに対して異なる命名規則を使用している VB.NET および C# プロジェクト、およびプロジェクトの名前空間の使用方法が原因である可能性があります。少なくとも私はそう考えて探し始めました。