DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

コマンドラインによりプロジェクトをビルドする
あるフォルダ以下にあるプロジェクトをすべてビルドする

通常プロジェクトやソリューションをビルドする時は、Visual Studioを起動し、ビルドするプロジェクトを開き、ビルドを行います。しかし複数のプロジェクトを一度にビルドしたい場合などでは、いちいちこのような作業を行うのは面倒です。

わざわざVisual Studioを起動させなくても、Devenv.exeやDevenv.comを使えば、コマンドラインからプロジェクトをビルドすることができます。

例えば、「Sample1.sln」というソリューションをリリースソリューション構成でビルドする場合は、

devenv /build release Sample1.sln

とします。

次に、指定されたフォルダ以下にあるすべてのソリューションファイルをDevenvによりビルドするVBScriptを紹介します。これを「VBS」という拡張子の付いたテキストファイルに保存し、使う時はこのファイルに適当なフォルダをドロップしてください。

Option Explicit

dim ConfigName, devenvPath
'ソリューション構成
ConfigName = "release"
'devenvのパス
devenvPath = """C:\Program Files\" + _
    "Microsoft Visual Studio .NET 2003\Common7\IDE\devenv.exe"""

dim WshShell, fso, objArgs, dic
Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set dic = CreateObject("Scripting.Dictionary")

'引数取得
set objArgs = WScript.Arguments

GetAllSolutionFiles objArgs(0)

dim res, f
for each f in dic.Items
    res = MsgBox(f, vbYesNoCancel, "buildしますか?")
    if res = vbYes then
        WshShell.Run devenvPath + " /build " + ConfigName + _
            " """ + f + """",0,true
    elseif res = vbCancel then
        exit for
    end if
next
MsgBox CStr(dic.Count) + "個のslnファイルがありました"

sub GetAllSolutionFiles(strFolder)
    dim str, s
    
    if fso.FolderExists(strFolder) = false then exit sub
    
    GetSolutionFiles strFolder
    
    'サブフォルダで実行
    dim folder, subfolders
    set folder = fso.GetFolder(strFolder)
    set subfolders = folder.SubFolders
    for each s in subfolders
        GetAllSolutionFiles s
    next
end sub

sub GetSolutionFiles(strFolder)
    dim folder, files, f
    
    if fso.FolderExists(strFolder) = false then exit sub
    
    'フォルダ内のすべてのファイル
    set folder = fso.GetFolder(strFolder)
    set files = folder.Files
    
    for each f in files
        if StrComp(fso.GetExtensionName(f),"sln",vbTextCompare)=0 then
            dic.Add f, f
        end if
    next
end sub

Devenvはこれ以外にも様々なコマンドラインスイッチがあり、コマンドラインによるプロジェクトのリビルドや、消去、オプションを指定してのVisual Studioの起動などを行うことができます。詳しくは、「Devenv コマンド ライン スイッチ」をご覧ください。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • Windows Vista以降でUACが有効になっていると、ファイルへの書き込みに失敗する可能性があります。詳しくは、こちらをご覧ください。