web-dev-qa-db-ja.com

同じアプリケーションでVB.NETとC#を使用しますか?

私はMSVisual Studio 2005でGUIベースのアプリケーションを開発していますが、同じプロジェクトでVB.NETとC#の両方を使用できるかどうかを知りたいだけです。または、C#で記述されたモジュールをVB.NETプロジェクトに含めることはできますか?

VB.NETベースのプロジェクトで使用したいC#で記述されたクラスがあるので、そのプロジェクトから関数を含めて呼び出すことができれば、VB.NETでクラスを再度記述する必要はありません。

.NETプログラミングは初めてなので、助けてください。

16
Amit Kumar Jha

自分でやったことはありませんが、C#コードをdllにコンパイルしてから、VBプロジェクトでdllを読み込んで参照できることはわかっています。

From "VB.netでC#クラスを呼び出す"

使用したいC#コードはDLLとしてコンパイルする必要があると思います。それが完了したら、そのプロジェクトへの参照をVB.Netプロジェクトに追加し、必要な名前空間をインポートするだけで、C#コードを使用できます。

ハウツー:C#DLLを作成して使用する (MSDN、VS2005の場合)も参照してください。

16
Jared Harley

同じプロジェクトでVBとC#の両方を使用できることを知りたいだけです。

いいえ、同じではありませんプロジェクト。一方、同じsolutionで使用できます。

または、C#で記述されたモジュールをVB.netプロジェクトに含めることはできますか。

2つのプロジェクトを含むソリューションを作成することをお勧めします。1つはC#で、VBプロジェクトから使用するライブラリを形成します。これは簡単で、保守が簡単で、拡張も簡単です。

27
Konrad Rudolph

また、C#コードがCLSに準拠していることを確認する必要があります。これは、他の.NET言語が理解できない機能(たとえば、VBは大文字と小文字を区別しないため、VBに存在しないunsigned ints、または大文字と小文字のみが異なるクラス)を公開しないことを意味します。 -センシティブ)。これを行うには、ガイドラインのいずれかに違反した場合にコンパイラがエラーを発生させるように属性を追加する必要があります。 この記事 これを行う方法を示します:

CLSCompliantAttributeは、アセンブリ、モジュール、タイプ、およびメンバーに適用できます。

アセンブリ全体をCLS準拠としてマークするには、次の構文が使用されます

using System; 
[Assembly:CLSCompliant(true)]

特定のメソッドをCLS準拠としてマークするには、次の構文が使用されます

[CLSCompliant(true)]  
public void MyMethod()`
9
Martin Harris

同じプロジェクトでC#ファイルとVBファイルを使用することはできません。ただし、同じソリューションとリファレンスでVBとC#プロジェクトを使用することはできます。それら。

コードでは、次のものを使用できます。

Imports namespace 

または

using namespace

参照が適切なプロジェクトに追加されたら、ソリューションを構築し、準備が整います。

別のソリューションでVB.NETライブラリを作成し、コンパイルして、DLLをC#プロジェクトにインポートすることもできます。その逆も可能です。

3
K.J.

VB.NETコードとC#コードを別々のプロジェクトに配置します。 (私はオープンソースプロジェクトでVB.NETとC#の両方を使用しています http://msquant.sourceforge.net/ 、そしてそれはうまく機能します)。

DLLについて心配する必要はありません。projectを参照するだけです([参照の追加]ダイアログボックスの[プロジェクト]タブを使用します)。例えば。 C#コード/プロジェクトで関数を使用する必要がある場合は、VB.NETプロジェクトの参照をC#プロジェクトに追加します。

3
Peter Mortensen

また、同じソリューションに VB.NET プロジェクトと C# プロジェクトがあり、一方が他方を参照している場合、変更が適用されることも知っておく必要があります。参照プロジェクトは、ソリューションを再構築した後、他の人が利用できるようになります。バイナリ参照があるようなものですが、同じソリューションでコードを変更する機能があります。

個人的にはこれは好きではありませんが、参照プロジェクトのコードを変更する状況にあり、変更が使用するコードにない理由がわからないので、わかりました。 、再構築する必要があります。

一時的な助けのために、それは受け入れられるかもしれませんが、毎日のプログラミングのためではありません。

2
Samuel

Visual Basicプロジェクトでモジュールを使用することだけを計画している場合は、コードをVisualBasicに変換することだけを検討する必要があります。 C#と VB.NET プログラムの両方でモジュールを使用する必要がある場合は、上記のソリューションの1つを使用します

* C#をVB.NETに変換 のようなものを試してみてください。 C#をVB.NETコードに変換します。このページは、C#で記述されたネット上で見つけたものを変換する必要がある場合にのみ使用します。

0
Aaron M