2009-06-24 39 views
7

VSに現在のソリューションへのパスの環境変数がありますか?Visual Studioソリューションパス環境変数

たとえば、%PathToWebRoot%はVSプロジェクトディレクトリの "WebSites"ディレクトリに設定されています。その価値は、さまざまな方法で変更することができます。私はそれがルートを指すようにソリューションをロードするたびに変更される変数があるのだろうかと思います。

私は、潜在的に別のマシンで実行されるユニットテストと、メソッドがAspNetDevelopmentServerHostになる前に設定しなければならない指示の1つを作成しています。もちろん、それらをハードコードすることはお勧めしませんが、推奨される環境変数は、必ずしもあなたのサイトが存在する場所ではなく、この場合はそうではありません。

答えて

13

VSには VS内で動作するマクロ変数が多数あります。ソリューションのフルパスを提供するものは$(SolutionDir)です。ただし、これはビルド前後のイベント(およびソリューションのMSBuildファイル内のAFAIK)から機能しますが、これは環境変数ではありません。考えてみると、VSの複数のインスタンスを開いている可能性があるため、「現在のソリューションへのパス」を指す(グローバル)環境変数を持つことはできません。

ユニットテストフレームワークに応じて、現在のディレクトリを取得するために実行コンテキストについて問い合わせることがよくあります。しかし、解決策のパスが得られない可能性があります。

+0

真、VSの現在のインスタンスがそれと一致するように変更しても、です他のインスタンスを壊すことになります。 $(SolutionPath)を試してみましょう。ユニットテストはVS内部から実行されるので、必要なものになる可能性があります。 – Otis

+0

感謝のように働いた、ありがとう。開発サーバーの現在のポートを把握する人がいるかどうか分からないとしますか? – Otis

+0

私は通常これらのマクロの名前を知る方法は、プロジェクトのプロパティを開き、[ビルドイベント]タブに行くことです。これを行い、編集ボタンのいずれかをクリックすると、(とりわけ)マクロボタンを含むダイアログが表示されます。このボタンをクリックすると、プロジェクトで利用可能なすべてのマクロ変数のリストが表示されます。私は便利なWebプロジェクトを持っていないので、私はあなたのためにそれを探すことはできませんが、確かに私は現在検査しているクラスライブラリの任意のポート番号はありません... –

5

Visual Studioではソリューションパスの環境変数が公開されています。これはSolutionPathと呼ばれています。それは次のようになります。

SolutionPath=D:\Team\MyProject\main-branch\MyProject.sln

を重要なことは、あなたは、Visual Studioから生成された任意のプロセスでそれを使用することができます - たとえば、あなたのソリューションからバッチスクリプトを起動する(それはそれは、Visual Studioの異なるインスタンス間で異なることができる方法です)。

.batファイルをダブルクリックして起動するようにVisual Studioを設定する場合は、this guideを入力すると、環境変数がバッチファイルで使用可能になります。

私の特定のケースでは、私のソリューション内のディレクトリに移動する必要がありました。同じレベルのコードをいくつか持っていました。しかし、私のバッチスクリプトはソースツリーの上位レベルにあり、 '現在の'ブランチを決定する簡単な方法はありませんでした。たとえば、これは私の構造だった:私はそれをダブルクリックして起動できるよう

D:\Team\MyProject\ 
    L-- Build 
     L-- MyBatchScript.bat 
    L-- main-branch 
     |-- MyProject.sln 
     L-- important-folder 
    L-- dev-branch 
     |-- MyProject.sln 
     L-- important-folder 

私はそれぞれの溶液中での溶液アイテムとしてMyBatchScript.batを参照しました。

ソリューションのフォルダではなく、ソリューションファイルへのパスを取得するには、私はDOSのバッチスクリプトの魔法のビットを使用:

FOR %%d IN (%SolutionPath%) DO SET SolutionFolder=%%~dpd 
REM Now I can run a tool with the correct folder 
mycustomtool.exe %SolutionFolder%important-folder 
関連する問題