C#でフォームを作成するサンプル。【csc.exe】

C# コンピュータ
C#

はじめに

最近のWindows10には標準でC#のコンパイラがインストールされており、やる気さえあれば特別なソフトを導入することなくC#でアプリケーションを作ることが出来ます。コンパイルはコマンドラインでの実行することになりますので、IDEと比べて若干ハードルが高いようにも思えますが、コーディング以外の作業は最低限の手順を覚えてしまえば同じ作業の繰り返しとなります。
何よりIDEを起動の待ち時間が無くなりますので、非力なパソコンでもすぐプログラミングを始められる点がメリットだと思います。

プロジェクトの作成

これをプロジェクトの作成と言うには余りにも稚拙な内容ではありますが、Powershellでmsbuild /t:runで.exeファイルが作成し実行することが出来るようなります。

プロジェクト作成で作成されるファイル

プロジェクト名:form_sample

ビルドファイル:form_sample.csproj

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <AssemblyName>form_sample</AssemblyName>
    <OutputPath>Bin\</OutputPath>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
  </PropertyGroup>
  <ItemGroup>
    <Compile Include="*.cs" />
  </ItemGroup>
  <Target Name="Build" Inputs="@(Compile)" Outputs="$(OutputPath)$(AssemblyName).exe">
    <MakeDir Directories="$(OutputPath)" Condition="!Exists('$(OutputPath)')" />
    <Csc Sources="@(Compile)" TargetType="winexe" OutputAssembly="$(OutputPath)$(AssemblyName).exe" />
  </Target>
  <Target Name="Clean">
    <Delete Files="$(OutputPath)$(AssemblyName).exe" />
  </Target>
  <Target Name="Rebuild" DependsOnTargets="Clean;Build" />
  <Target Name="Run" DependsOnTargets="Rebuild">
    <Exec Command="$(OutputPath)$(AssemblyName).exe" />
  </Target>
</Project>

ソース:form_sample.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing;

namespace form_sample
{
    class Program
    {
        // アプリケーションのエントリポイント
        [STAThread]
        static void Main(string[] args)
        {
            Form form = new Form1();
            
            Application.Run(form);
        }
    }
}

ソース:From1.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing;

namespace form_sample
{
    class Form1 : Form
    {
        // コンストラクタ
        public Form1()
        {
            this.Load += Form1_Load;
        }

        // Loadイベント
        private void Form1_Load(object sender, EventArgs e)
        {
            // タイトルをセット
            this.Text = "form_sample";
        }
    }
}

コメント