2012-02-16 16 views
4
  • IDE:VS2010
  • Framework.net:4.0

私はいくつかの公共のクラスでは、Visual Studio 2010の下のAC#のDLLプロジェクトを作成し、そして私は、別のDLLプロジェクト内のクラスを使用したいと思いますしかし、vb.netで書かれています。vb.net dllのdllからc#クラスをインポートすることは可能ですか?

vb.net dllプロジェクトでは、ビルドされたc#dllを参照しましたが、c#クラスをインポートすることはできません。 c#dllの名前空間も認識されません。

私のC#クラスを見るにはどうすればいいですか? これが可能な場合。

私のC#のDLL(名前空間MyCSharpDll)のクラスの例:私vb.netのDLLのファイルで

namespace MyCSharpNamespace { 
    public class MyCSharpClass { 
    public void Test() {} 
    } 
} 

例:

Imports MyCSharpDll.MyCSharpNamespace 

VS2010はMyCSharpDllが不明であるというエラーを示し、またはパブリックメンバーなし。

ありがとうございます。

答えて

4

を私はあなたが 'MyCSharpDll' 部分なしであなたの輸入

輸入MyCSharpNamespace

を書き直すべきだと思います

+0

非常に良い!!しかし、なぜ私は私のケースで完全な輸入声明書を書くことができないのか分からない。注:最初は、このステートメントを試しましたが、うまくいきませんでした。 – Alain

+0

'MyCSharpDll'は名前空間ではないためです。 – Steve

+0

私のメッセージでは明確ではありませんでしたが、MyCSharpDllはdllのルート名前空間です。 – Alain

3

あなたは "私はVisual Studio 2010の下でいくつかのパブリッククラスを使ってc#dllプロジェクトを作成しました。別のdllプロジェクトの中でそのクラスを使用したいと思いますが、vb.netで書いています。

はいできます。

ちょうどそのDLL参照に追加すると、それだけです!

+0

私はdllへの参照を、私のメッセージにed。多分C#プロジェクトで私は何かを設定する必要がありますか? – Alain

+4

ほぼ正しい。インポートされたDLLは、CLSに準拠しており、正常にインポートされるためには同じランタイムバージョンに対してコンパイルする必要があります。 – Oded

+0

@Alainそれは100% –

4

問題のDLLがCLS compliantであり、同じランタイムバージョンに対してコンパイルされていると問題なく使用できるはずです。

これらの条件のいずれか(または両方)が満たされない場合、インポートされたDLLを使用することはできません。

は、アセンブリメタデータに定義されているようImportディレクティブは、名前空間を使用していることを確認してください - それはあなたがインポートする必要があるものだ、デフォルトの名前空間が何であるかを見るためにあなたのC#プロジェクトのプロパティを見てください。

+0

私のC#DLLのデフォルト名前空間は "MyCSharpDll"です。 @Steveの答えを参照してください、私は完全なImportsステートメント、すなわちMyCShrapDl.MCSharpNamespac、私の他の輸入などの電子と私のC#のクラスをインポートすることはできませんなぜまだ私は理解していません。 – Alain

関連する問題