我正在尝试创建一个加载VS2015解决方案文件的批处理文件。我们使用源代码控制分支,因此.sln中包含的项目的路径可能会有所不同,具体取决于所选的分支,如下所示: 树干\ 枝\ B1 \ 枝\ 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
正如您所看到的,包含文件夹之间相对移动的环境变量将被完全忽略,但是其他环境变量。变量被添加到字符串OK。
有没有办法在保持相对路径的同时使用环境变量?
(我知道有一种方法可以使用带有绝对路径的subst命令来克服这个问题,但如果有更好的方法,我想避免这种情况。)