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

MSBuild无法识别响应文件中的计算机名,msbuild,Msbuild,我们有一个标准的MSBuild项目文件,用于不同的部署阶段(预阶段、阶段、活动等)。由于每个部署阶段都在不同的服务器上执行,因此我们引入了一个名为$SourceDatabaseServer的服务器参数,并在项目文件中的每个目标中广泛使用该参数。注意:此数据库服务器名称可能与运行生成的服务器名称不同 为了帮助我们定制此参数,我们为每个部署阶段创建了一个响应文件,并随后在响应文件中定义了此参数的值,例如/p:SourceDatabaseServer=SRC\u DB\u NAME 这很好,直到我们创

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

为了帮助我们定制此参数,我们为每个部署阶段创建了一个响应文件,并随后在响应文件中定义了此参数的值,例如
/p:SourceDatabaseServer=SRC\u DB\u NAME

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

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


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

如果使用
%COMPUTERNAME%


$(VAR)
是“在”MSBuild系统内部时变量扩展的语法,但是从外部来看,我相信您必须使用shell环境变量扩展语法,
%VAR%
如果使用
%COMPUTERNAME%
会怎么样

$(VAR)
是在MSBuild系统内部进行变量扩展的语法,但是从外部来看,我相信您必须使用shell环境变量扩展语法
%VAR%