C#のソースファイルをドラッグアンドドロップしてコンパイルするバッチファイル

※バージョン番号（v4.0.30319）のフォルダは環境によって番号が違うので適宜修正する

```bat:CompileCS.bat
@echo off
REM このバッチファイルにドラッグアンドドロップしたC#ソースファイルをコンパイルする

cd %~dp1
set CSC_EXE=C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
for %%f in (%*) do %CSC_EXE% -target:winexe "%%f"
```

コードが若干長いが、以下のC#ソースファイル［HelloWorldProject.cs（文字コード：UTF-8）］を上のバッチファイル［CompileCS.bat］にドラッグアンドドロップすると、ソースファイルのある場所に HelloWorldProject.exe が作成される。
※複数ファイルを一括コンパイルも可能

```cs:HelloWorldProject.cs
// 文字コード［UTF-8］で保存する

using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Reflection;
using System.Windows.Forms;
using System.Drawing;

class HelloWorldProject : Form
{
    [STAThread]
    public static void Main() {
        GeneratedCodeAttribute generatedCodeAttribute =
            new GeneratedCodeAttribute(
                "Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0"
            );
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run( new HelloWorldProject());
    }

    public HelloWorldProject(){
        Text = "HelloWorldProject";
        ClientSize = new Size(300, 330);
        BackColor = Color.FromArgb(0xf5, 0xf5, 0xf5);

        Button btn1 = new Button();
        btn1.Location = new Point(75, 50);
        btn1.Size = new Size(150, 50);
        btn1.BackColor = Color.FromArgb(0xd3, 0xd3, 0xd3);
        btn1.Font = new Font("Meiryo UI", 18);
        btn1.Text = "English";
        btn1.Click += btn1_Click;
        Controls.AddRange(new Control[] { btn1 });

        Button btn2 = new Button();
        btn2.Location = new Point(75, 110);
        btn2.Size = new Size(150, 50);
        btn2.BackColor = Color.FromArgb(0x00, 0x00, 0xFF);
        btn2.ForeColor = Color.FromArgb(0xFF, 0xFF, 0xFF);
        btn2.Font = new Font("Meiryo UI", 18);
        btn2.Text = "日本語";
        btn2.Click += btn2_Click;
        Controls.AddRange(new Control[] { btn2 });

        Button btn3 = new Button();
        btn3.Location = new Point(75, 170);
        btn3.Size = new Size(150, 50);
        btn3.BackColor = Color.FromArgb(0xd3, 0xd3, 0xd3);
        btn3.Font = new Font("Meiryo UI", 18);
        btn3.Text = "한글";
        btn3.Click += btn3_Click;
        Controls.AddRange(new Control[] { btn3 });

        Button btn4 = new Button();
        btn4.Location = new Point(75, 230);
        btn4.Size = new Size(150, 50);
        btn4.BackColor = Color.FromArgb(0xd3, 0xd3, 0xd3);
        btn4.Font = new Font("Meiryo UI", 18);
        btn4.Text = "中文";
        btn4.Click += btn4_Click;
        Controls.AddRange(new Control[] { btn4 });
    }

    void btn1_Click(object sender, System.EventArgs e) {
        MessageBox.Show("Hello,World!", "英語");
    }

    void btn2_Click(object sender, System.EventArgs e) {
        MessageBox.Show("こんにちわ、世界！", "日本語");
    }

    void btn3_Click(object sender, System.EventArgs e) {
        MessageBox.Show("안녕하세요 세계！", "韓国語");
    }

    void btn4_Click(object sender, System.EventArgs e) {
        MessageBox.Show("你好 世界！", "中国語");
    }
}
```

出来上がった HelloWorldProject.exe をダブルクリックすると、
![HelloWorldProject.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146265/5239e51a-a1c1-5d78-f381-53135407fafa.png)
というウィンドウが現れて、それぞれのボタンをクリックすると言語ごとの「Hello,World!」がメッセージダイアログに表示される。

---
＜修正＞
［2021/12/31］
バッチファイルを sendTo フォルダに入れて右クリックメニューの［送る］で実行する場合に備えて、カレントフォルダをソースファイルのフォルダにするための、

```bat
cd %~dp1
```
を追加しました。