我正在尝试创建一个加载 VS2015 解决方案文件的批处理文件。我们使用源代码控制分支,因此.sln 中包含的项目的路径可能会有所不同,具体取决于所选的分支,如下所示:trunk\branches\B1\branches\B2\ 等...
在 .sln 文件中,包含的项目定义如下所示:
Project("{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX}") = "My.Awesome.Project", "..\..\..\My\Awesome\Project\trunk\HelloWorld\HelloWorld.csproj", "{YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY}"
或这个:
Project("{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX}") = "My.Awesome.Project", "..\..\..\..\My\Awesome\Project\branches\B1\HelloWorld\HelloWorld.csproj", "{YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY}"
我有一个使用这些环境变量的想法:
@SET BACKPATH=..\..\..
@SET FORWARDPATH=trunk
Project("{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX}") = "My.Awesome.Project", "%BACKPATH%\My\Awesome\Project\%FORWARDPATH%\HelloWorld\HelloWorld.csproj", "{YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY}"
加载解决方案时,一旦我开始使用这些环境变量,处理后的字符串就会切换到绝对路径。所以它看起来像这样:
C:\Team1\Work\My\Awesome\Project\trunk\HelloWorld\HelloWorld.csproj
如您所见,包含文件夹之间相对移动的环境变量被完全忽略,但另一个 env. 变量被添加到字符串 OK。
有没有办法在使用环境变量的同时保持相对路径?
(我知道有一种方法可以使用带有绝对路径的 subst 命令来克服这个问题,但如果有更好的方法,我想避免这种情况。)