酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Visual Studioのスタートアップ プロジェクトを変更する

「VSでスタートアッププロジェクトの設定をslnで実現できないだろうか・・・」この問題には僕も悩んでいました。


suoファイルを削除すると指定していたスタートアッププロジェクトが初期化されてしまう

ソリューション エクスプローラー上でスタートアップ プロジェクトを設定しても.suoファイルを削除してしまうと、記憶喪失状態になってしまい、毎回毎回スタートアップ プロジェクトを設定する必要があります。

Visual Studioで下図のような構成のソリューション(Sample.sln)があるとします。「App2」が「ClassLibrary1」を参照しているような状態です。

f:id:ch3cooh393:20130121112429p:plain

しかし、.suoファイルがない状態でソリューションを開くと、「ClassLibrary1」がスタートアップ プロジェクトになっており、F5キーを押してもアプリケーションを実行できません。

解決案のひとつとして手動でslnファイルを書き換える

僕が知ってる改善方法は1つしかなく、「slnファイルを直接テキストエディタで編集する」ことです。

Sample.slnを開くと下記のようになっています。.slnファイルの一番上に来ているプロジェクトが「ClassLibrary1」であることがわかります。このことから先頭で定義されているプロジェクトがデフォルトでスタートアップ プロジェクトとなっているのことが推測できます。

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassLibrary1", "ClassLibrary1\ClassLibrary1.csproj", "{4AD4137E-1593-46A0-9DEB-B6D54949F90C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "App2", "App2\App2.csproj", "{5AD2C2C6-2C43-46D4-88BF-0E763D7A32DB}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution

...(省略)

もし、.slnファイルの先頭で定義されているプロジェクトが、デフォルトでスタートアップ プロジェクトになるのであれば、スタートアップ プロジェクトにしたいプロジェクトを先頭に移動させます。

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "App2", "App2\App2.csproj", "{5AD2C2C6-2C43-46D4-88BF-0E763D7A32DB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassLibrary1", "ClassLibrary1\ClassLibrary1.csproj", "{4AD4137E-1593-46A0-9DEB-B6D54949F90C}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution

...(省略)

.suoファイルを削除した上でVisual Studioを開くと、下図のように「App2」がスタートプロジェクトになっていることが確認できました。

f:id:ch3cooh393:20130121112506p:plain


僕が知っているのはこの方法ですが、他に正しい対応方法をご存じの方がいらっしゃれば教えて欲しいです……。

追記:やっぱり手動で書き換えないとダメみたい……

僕がこのエントリを書いている間にリプライを頂いていました。

……悲しい。