ツナ缶雑記

ぐうたらSEのブログです。主にマイクロソフト系技術を中心に扱います。

1つのソリューション内でC#とVBを使う

f:id:masatsuna:20200328164345p:plain

最近 C#VB を混在させる話をよく質問されたので回答しておきます。

C#VB はソリューション内に混在できる

結論から言うと、これは可能です。 VB のプロジェクトと C# のプロジェクトを用意し、プロジェクト参照を行うことで、 1 つのソリューション内で複数の言語を取り扱うことができます。

f:id:masatsuna:20200328163452p:plain
C#VB を混在させたソリューション

このような形で別の言語で作成したプロジェクトを、参照に追加することができるようになっています。 そうすると、以下のように C# のプロジェクトから VB のプロジェクトを呼び出すことが可能になります。

Public Module Math
    Public Function Add(ByVal val1 As Int32, ByVal val2 As Int32) As Int32
        Return val1 + val2
    End Function
End Module
using System;

namespace CSharpApp
{
    class Program
    {
        static void Main(string[] args)
        {
            int val = VBLib.Math.Add(10, 20);
            Console.WriteLine(val);
        }
    }
}

ただし、 1 つのプロジェクト内に複数の言語を混在させることはできません。 また今後のことを考えると、新しく作るソースコードC# で作っておくことを個人的にはおすすめします。