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
真、VSの現在のインスタンスがそれと一致するように変更しても、です他のインスタンスを壊すことになります。 $(SolutionPath)を試してみましょう。ユニットテストはVS内部から実行されるので、必要なものになる可能性があります。 – Otis
感謝のように働いた、ありがとう。開発サーバーの現在のポートを把握する人がいるかどうか分からないとしますか? – Otis
私は通常これらのマクロの名前を知る方法は、プロジェクトのプロパティを開き、[ビルドイベント]タブに行くことです。これを行い、編集ボタンのいずれかをクリックすると、(とりわけ)マクロボタンを含むダイアログが表示されます。このボタンをクリックすると、プロジェクトで利用可能なすべてのマクロ変数のリストが表示されます。私は便利なWebプロジェクトを持っていないので、私はあなたのためにそれを探すことはできませんが、確かに私は現在検査しているクラスライブラリの任意のポート番号はありません... –