web-dev-qa-db-ja.com

ASP.Net WebサイトプロジェクトでVB.NetとC#コードを混在させていますか?

かなり古く、よく聞かれる質問です。ここにも同様の質問がありますが、私の質問はもう少し具体的です。

Q1。 ASP.Net WebサイトでC#コードとVB.Netコードを混在させることは合法ですか?それは機能しますか?それがうまくいくなら、それはどのように行われるのでしょうか?どんなサンプルでも良いでしょう。

Q2。 C#コードとVB.Netコードを混在させることによる影響がある場合は、それらも共有してください。

VB.NetでコーディングされたWebプロジェクトがあります。私はプロジェクトの1つのモジュールに取り組んでいます。そして私はC#でコーディングしたいと思います。プロジェクトに取り組んでいるのは私だけではないため、プロジェクト全体をC#に変換することはできません。ただし、ビルドする予定のモジュールは、C#でビルドする必要があります。

Webプロジェクトの場合、一部をC#でコーディングし、一部をVB.netでコーディングすると、プロジェクトをdllにコンパイルする際に問題が発生すると聞いています。本当?はいの場合、解決策は何ですか。

また、.Netでダイナミックリンクライブラリを構築している場合、C#とVb.Netコードを混在させることはできますか?

24
Steve Johnson

から http://msdn.Microsoft.com/en-us/library/t990ks23.aspx

App_Codeフォルダー内の複数のプログラミング言語

App_Codeフォルダー内のソースコードは単一のアセンブリにコンパイルされるため、App_Codeフォルダー内のすべてのファイルは同じプログラミング言語である必要があります。たとえば、App_CodeフォルダーにVisual BasicとC#の両方のソースコードを含めることはできません。

ただし、App_Codeフォルダーのサブフォルダーを個別のコンパイル可能な単位として扱うようにWebアプリケーションを構成できます。各フォルダには、異なるプログラミング言語のソースコードを含めることができます。構成は、Web.configファイルのコンパイル要素にcodeSubDirectories要素を作成し、サブフォルダーへの参照を追加することによって指定されます。次の例は、VBCodeおよびCSCodeという名前のサブフォルダーを構成して別々のアセンブリにコンパイルする方法を示しています。

<compilation debug="false">
    <codeSubDirectories>
        <add directoryName="VBCode" />
        <add directoryName="CSCode" />
    </codeSubDirectories>
</compilation>

VBCodeおよびCSCodeサブフォルダーへの参照には、サブフォルダーに含まれているプログラミング言語に関する情報を含める必要はありません。 App_Codeフォルダー自体と同様に、ASP.NETは、サブフォルダー内のファイルに基づいて、使用するコンパイラーを推測します。

52
Gabe

投票数が最も多いここでの回答は、Webサイトプロジェクトでのみ機能し、Webアプリプロジェクトでは機能しません。多くの開発者は、技術的には.NETでは別のものであるという事実を一般的に無視して、「Webアプリケーション」という用語を使用していると思います。 Microsoftは、「デフォルトでは、Webアプリケーションはプロジェクトファイルの言語設定に基づいてコンパイルされます。例外を作成することはできますが、比較的困難です」と述べています。したがって、これを行う唯一の方法は、1つのソリューション内に2つの別々のプロジェクトを含めることだと思います。 (繰り返しになりますが、Webサイトプロジェクトにはソリューションやプロジェクトファイルがありません。)すべての詳細がわかりません。

8
user692918

コントロールとして必要なコードを実行すれば、同じプロジェクト内でそれらを混在させることができるようです。したがって、メインサイトがC#であり、ascxコントロールとして必要なVBの部分を実行する場合、サイト内にそれをドラッグアンドドロップできます。

私はあなたがそれをすることができるとは思いませんでした、しかしチームメンバーは彼がしている仕事の一部でそれを解決しました。

0
Leroy