1

我正在尝试创建一个加载 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 命令来克服这个问题,但如果有更好的方法,我想避免这种情况。)

4

0 回答 0