MSBuild无法识别响应文件中的计算机名称

时间:2009-10-04 16:43:23

标签: msbuild

我们有一个标准的MSBuild项目文件,用于我们不同的部署阶段(前期,阶段,现场等)。由于每个部署阶段都在不同的服务器上执行,因此我们引入了一个名为$SourceDatabaseServer的服务器参数,并在项目文件中的每个目标中广泛使用它。注意:此数据库服务器名称可能与运行构建的服务器名称不同。

为了帮助我们自定义此参数,我们为每个部署阶段创建了一个响应文件,随后在响应文件中为此参数定义了一个值,例如: /p:SourceDatabaseServer=SRC_DB_NAME

这很好,直到我们创建了一个新的部署阶段,其中该值必须是当前的计算机名称。所以我们想通过在响应文件($(COMPUTERNAME))中使用/p:SourceDatabaseServer=$(COMPUTERNAME)保留属性,这可以解决问题,但似乎这个值是由MSBuild按字面解释的,因此我们得到一个错误无法找到服务器$(ComputerName)

有趣的是,当$(COMPUTERNAME)属性直接在proj文件中使用时,它可以工作,但如上所述,我们不一定要在所有情况下都使用计算机名。

有没有办法在响应文件中使用$(COMPUTERNAME)属性并让MSBuild正确解释这个?

1 个答案:

答案 0 :(得分:1)

如果您使用%COMPUTERNAME%怎么办?

当你在MSBuild系统内部时,

$(VAR)是变量扩展的语法,但是来自外部,我相信你必须使用shell环境变量扩展语法,{{1} }。