サイトアイコン たーちゃんの「ゼロよりはいくらかましな」

VisualStudioがなくてもC#をコンパイルする方法

adonyig / Pixabay

仕事柄、様々なお客さんの現場で作業することがありますが、
必ずしもいろいろな環境が整っているわけではありません。

仕事をしていると「あのソフト(ツール)があればこの仕事楽なのに・・・」と
わかっていても、お客さんのところのセキュリティ上、好き勝手にソフトは
使用することが大概できません。

ではどうするかというと、自分で作ってしまうのが一番早いということになります。

Windowsアプリをvisualstudioで、C#やVBなどを使って作成したことのある方は
多いと思いますが、ではvisualstudioがなければwindowsアプリは
作成できないのでしょうか?

実はそんなことはないんです。

csc.exeを探せ!

最近のwindowsPCであれば大概.NET Frameworkのいずれかのバージョンが
インストールされていると思います。

↓このようなフォルダがあるはず。
C:\Windows\Microsoft.NET

さらにその配下に↓のいずれかのフォルダがあると思います。
C:\Windows\Microsoft.NET\Framework
C:\Windows\Microsoft.NET\Framework64

その配下に↓のようなフォルダ(v以降はバージョン詳細)があると思います。
C:\Windows\Microsoft.NET\Framework\v~~
C:\Windows\Microsoft.NET\Framework64\v~~

僕の場合はこんな感じでした。
C:\Windows\Microsoft.NET\Framework64\v4.0.30319

このフォルダの中にcsc.exeというものがあると思います。
これがC#のコンパイルをしてくれるexeなんです!!

csc.exeを使用したコンパイル方法

コンパイル元となるcsファイル

コンパイル元となるcsファイルとして以下のような
Formを表示するだけの、Mainメソッドを持つクラスを用意しました。

using System;
using System.Collections.Generic;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Reflection;
using System.Windows.Forms;
using System.Drawing;
using System.ComponentModel;
using System.Runtime.InteropServices;

public class SampleForm : Form {

	[STAThread]
	public static void Main() {
		
		GeneratedCodeAttribute generatedCodeAttribute =
			new GeneratedCodeAttribute(
				"Microsoft.VisualStudio.Editors.SettindsDesigner.SettingSingleFileGenerator", "10.0.0.0"
			);
		
		Application.EnableVisualStyles();
		Application.SetCompatibleTextRenderingDefault(false);
		Application.Run(new SampleForm());
	}
	
	public SampleForm() {
	
		Text = "SampleForm";
		StartPosition = FormStartPosition.Manual;
		Location = new Point(77, 0);
		ClientSize = new Size(500, 150);
	}
}

実際にアプリを作成する場合ですと、
visualstudioがない環境であれば、コードアシストなどができないので、
もう、これは何度もコンパイルかけて頑張るしかないですね!

 

 

csc.exeを実行するコマンド

batファイルなどでよいので、以下のようにコマンドを実行します。

cd [.NET Frameworkのパス(例:C:\Windows\Microsoft.NET\Framework64\v4.0.30319)]
csc.exe /optimize+ /out:[出力させるexeファイルの絶対パス] /t:winexe [csファイルの格納パス]\*.cs

optimizeオプションは実行時のコード最適化の有無です。
デフォルでは無効になっているので、「optimize+」で有効にします。

tオプションはtargetオプションの省略形で、winexeを指定することで
exeファイルが作成されるようになります。

実行すると・・・

コンパイルに問題なければ、指定したexeファイルが作成されていて、
実行すると↓のようななにもないFormが表示されていると思います。

最後に

ここまでできればあとはボタンを追加したり、データベースの結果を
表示したり・・・夢が広がりますね。

コードアシストなしでプログラムを作成することは
なかなか骨の折れる作業かもしれませんが、

自分の現場での作業を助けてくれるツールを自分で
作成できれば、心強いかと思います。
ぜひ、みなさんも挑戦してみてください。

次回は、この方法で僕がつくった
簡易ランチャーのコードを記載しようと思います。


にほんブログ村


人気ブログランキング

モバイルバージョンを終了