サイトマップ 連絡先 最初に戻る 戻る 次へ進む
$Date: 2018-07-07 06:49:13 +0900 (2018/07/07 (土)) $
$Revision: 1347 $
説明
Visul Studio でスタートアッププロジェクトを設定しても .suo ファイルに保存されるだけでソリューションファイルに保存されません。ソリューションファイルを変更してデフォルトのスタートアッププロジェクトを変更するプラグインを開発しました。
Visual Studioのスタートアップ プロジェクトを変更する で説明されている手順を プラグインで行うものです。
//github.com/michaKFromParis/slnStartupProject を使っています。
ソースコード
//github.com/m-tmatma/SetStartupProjectVS で公開しています。バイナリ
//github.com/m-tmatma/SetStartupProjectVS/releases からダウンロードできます。Marcket Place での公開
ここから 入手可能です。対応 Visual Studio
- Visual Studio 2015 Community (多分 Pro/Enterprise も)
- Visual Studio 2017 Community (多分 Pro/Enterprise も)
インストール
- バイナリをダウンロードして vsix ファイルをダブルクリックします。
使い方
- 複数プロジェクトを含むソリューションを開きます
- スタートアッププロジェクトに設定したいプロジェクトで右クリックします。
- Set Startup Project by writing to the solution file を選びます
- ソリューションを再読み込みするのを聞かれるので再読み込みします
スクリーンショット
複数のプロジェクトを含むソリューションをデバッグするとき、Visual Studio はソリューションのスタートアップ・プロジェクトのデバッグ・プロパティを使用してデバッグを開始します。スタートアップ・プロジェクトは、現在作業中のプロジェクトでない場合もあります。スタートアップ・プロジェクトは、ソリューションのプロパティで定義され、ソリューション・エクスプローラ内でハイライトされます。
デバッグ時に使用するプロパティがあるプロジェクトを選択するには、次のいずれかを実行できます。
- スタートアップ・プロジェクト以外のプロジェクトのデバッグを開始します。これを行うには、ソリューション・エクスプローラ内を右クリックして [デバッグ > 新しいインスタンス] をクリックします。
- アプリケーションをデバッグする前に、コンテキスト・メニューからスタートアップ・プロジェクトを指定します。
- ソリューション・エクスプローラで、スタートアップ・プロジェクトとして指定するソリューションのプロジェクトをクリックします。
- [スタートアップ プロジェクトに設定] をクリックします。
- [デバッグ > デバッグ開始] をクリックしてデバッグを開始します。
アプリケーションが始まるときに呼び出す位置(エントリポイント)を変更する
ここでは、Windowsフォームアプリケーションにおいて、アプリケーションがはじめに開始される場所(エントリポイント)を変更する方法を紹介します。なおエントリポイントについて詳しくは、「アプリケーションのエントリポイントを自作する」をご覧ください。
Visual Studioを使った方法
VB.NET
まずはVB.NETでの説明です。VB.NETでエントリポイントに指定できるのは、フォームかSub Mainプロシージャです。
補足:正確には、エントリポイントはSub Mainのみです。以下の方法でスタートアップオブジェクトをフォームにすると、コンパイラが自動的にSub Mainを作成します。
アプリケーションが開始されるときにはじめに表示したいフォームを変えたり、Sub Mainプロシージャから開始したいときには次のようにしてエントリポイントを変更します。
- ソリューションエクスプローラでエントリポイントを変更したいプロジェクトを右クリックしてポップアップメニューを表示させ、「プロパティ」をクリックします。
- Visual Studio 2005以降では、「アプリケーション」タブにある「スタートアップフォーム」でエントリポイントを指定し、「OK」をクリックします。なお、Sub
Mainプロシージャを指定するには、「アプリケーションフレームワークを有効にする」を無効する必要があります。「アプリケーションフレームワークを有効にする」を無効すると、「スタートアップフォーム」は「スタートアップオブジェクト」と名前を変えて、Sub Mainプロシージャを指定できるようになります。
Visual Studio 2003以前では、(プロジェクト)プロパティページダイアログにおいて、「共有プロパティ-全般」の「スタートアップの設定」でエントリポイントを指定し、「OK」をクリックします。
補足:Visual Studio 2005以降では、「アプリケーションフレームワークを有効にする」を無効にしないと、本当のエントリポイントを変更することはできません。「アプリケーションフレームワークを有効にする」を有効にしたときのエントリポイントは、MyApplicationクラスのMainメソッドとなるようです。
C#
次にC#での説明です。VB.NETでエントリポイントに指定できるのは、静的なMainメソッドです。
プロジェクトに複数のクラスがあり、複数のクラスに静的なMainメソッドが定義されている時、アプリケーションの起動時に実行するメソッド(エントリポイント)を次のような方法で変更できます。
- ソリューションエクスプローラでエントリポイントを変更したいプロジェクトを右クリックしてポップアップメニューを表示させ、「プロパティ」をクリックします。
- Visual Studio 2005以降では、「アプリケーション」タブにある「スタートアップオブジェクト」でエントリポイントにしたいMainメソッドがあるクラスを指定します。
Visual Studio 2003以前では、(プロジェクト)プロパティページダイアログにおいて、「共有プロパティ-全般」の「スタートアップオブジェクト」でエントリポイントにしたいMainメソッドがあるクラスを指定し、「OK」をクリックします。
コンパイラオプションを使った方法
vbc.exeまたはcsc.exeを使ってコンパイルする時は、コンパイラオプション"/main"を使ってエントリポイントとするMainメソッドの位置を指定します。
vbc t2.vb t3.vb /main:Test2 csc t2.cs t3.cs /main:Test2- 履歴:
- 2007/2/5 .NET Framework 2.0に関する記述を追加。
- 2010/4/17 画像を追加。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。
- .NET Tipsをご利用いただく際は、注意事項をお守りください。
複数のプロジェクトから構成される Visual Studio のソリューションにおいて、Visual Studio からアプリを(デバッグ)起動するときは、適切なプロジェクト(実行ファイルを生成するプロジェクト)を「スタートアップ プロジェクト」に設定する必要がある。
(例)たとえば1つの実行ファイルと2つのライブラリ(DLL)で構成されるソリューションにおいては、実行ファイル(を作成するプロジェクト)を「スタートアップ プロジェクト」として設定(選択)しておく必要がある。
Visual Studio 20xx は、「スタートアップ プロジェクト」の設定を(隠しファイルである)Solution User Option file (.suo) に保存する。そして .suo ファイルが削除されたり、 .suo を共有していない複数のVisual Studio 環境の間で、「スタートアップ プロジェクト」の設定の齟齬(間違い)が生じる。
実行エラーの例
"xxx.lib"は有効なWin32アプリケーションではありません. |
暫定解決策
実行エラーが生じたときに「スタートアップ プロジェクト」を(再)設定する。
抜本解決策
Visual Studio 20xx は Solution User Option file ( .suo ) がみつからないとき、ソリューションファイル ( xxx.sln ) の先頭に記述されたプロジェクトを既定のスタートアップ プロジェクトとみなす。そこでソリューションファイルをテキストエディタで直接編集して、適切なプロジェクトを記述の先頭に移動する。