Visual Studio确实为解决方案路径公开了一个环境变量 - 它被称为SolutionPath
。它看起来像这样:
SolutionPath=D:\Team\MyProject\main-branch\MyProject.sln
重要的是,你可以用它在任何过程中从Visual Studio衍生出 - 例如,从您的解决方案推出批处理脚本(这就是它可以跨Visual Studio中的不同情况不同)。
如果您将Visual Studio配置为通过双击this guide来启动.bat
文件,那么环境变量将在您的批处理文件中可用。
在我的特殊情况下,我需要到达我的解决方案中的一个目录,并且我有几个分支的代码都在同一级别。但是我的批处理脚本在源代码树中处于更高级别,并且没有简单的方法来确定“当前”分支。例如,这是我的结构:
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 2009-06-25 13:01:02