はじめに
最近のWindows10には標準でC#のコンパイラがインストールされており、やる気さえあれば特別なソフトを導入することなくC#でアプリケーションを作ることが出来ます。コンパイルはコマンドラインでの実行することになりますので、IDEと比べて若干ハードルが高いようにも思えますが、コーディング以外の作業は最低限の手順を覚えてしまえば同じ作業の繰り返しとなります。
何よりIDEを起動の待ち時間が無くなりますので、非力なパソコンでもすぐプログラミングを始められる点がメリットだと思います。
プロジェクトの作成
新たにアプリケーションを作る場合、IDEではプロジェクトの作成をします。プロジェクトの作成では色々な作業を自動的に実行してくれるわけですが、コマンドラインベースの場合その作業を手動で行う必要があります。
毎回その作業を行うのも億劫なので、プロジェクト用ディレクトリの作成、ビルド作業を手順化したビルドファイルの作成、雛形ソースのコピーをするスクリプトを作ってみました。
毎回その作業を行うのも億劫なので、プロジェクト用ディレクトリの作成、ビルド作業を手順化したビルドファイルの作成、雛形ソースのコピーをするスクリプトを作ってみました。
C#のプロジェクトを作成するPowershellスクリプト
Visual Studioを使わずコンソールベースでC#のプログラミングをしています。プログラミングの学習のため色々なプログラムを作成するのですが、新しいプログラムを作成するにあたり、プログラム用のディレクトリを作成し、ひな型となるソースフ...
Powershellのスクリプトモジュールの使い道【.csprojの作成]
Powershelllのスクリプトモジュールという用語は知ってはいましたが、いまいちピンとくる使い道が思いつきませんでした。早々使い回す関数やクラスなど書いたりしませんし、またライブラリとして再利用することを意識したコーディングは息が詰まり...
これをプロジェクトの作成と言うには余りにも稚拙な内容ではありますが、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";
}
}
}
コメント