25

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

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 コードを混在させることはできますか?

4

3 に答える 3

56

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

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

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

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

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

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

于 2010-02-26T06:17:03.390 に答える
7

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

于 2011-08-04T15:10:49.280 に答える
0

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

あなたがそれをできるとは思いませんでしたが、チームメンバーが彼が行っていた仕事でそれを解決しました。

于 2010-11-02T15:30:33.470 に答える