我们有一个标准的MSBuild项目文件,用于我们不同的部署阶段(前期,阶段,现场等)。由于每个部署阶段都在不同的服务器上执行,因此我们引入了一个名为$SourceDatabaseServer
的服务器参数,并在项目文件中的每个目标中广泛使用它。注意:此数据库服务器名称可能与运行构建的服务器名称不同。
为了帮助我们自定义此参数,我们为每个部署阶段创建了一个响应文件,随后在响应文件中为此参数定义了一个值,例如: /p:SourceDatabaseServer=SRC_DB_NAME
。
这很好,直到我们创建了一个新的部署阶段,其中该值必须是当前的计算机名称。所以我们想通过在响应文件($(COMPUTERNAME)
)中使用/p:SourceDatabaseServer=$(COMPUTERNAME)
保留属性,这可以解决问题,但似乎这个值是由MSBuild按字面解释的,因此我们得到一个错误无法找到服务器$(ComputerName)
。
有趣的是,当$(COMPUTERNAME)
属性直接在proj文件中使用时,它可以工作,但如上所述,我们不一定要在所有情况下都使用计算机名。
有没有办法在响应文件中使用$(COMPUTERNAME)
属性并让MSBuild正确解释这个?
答案 0 :(得分:1)
如果您使用%COMPUTERNAME%
怎么办?
$(VAR)
是变量扩展的语法,但是来自外部,我相信你必须使用shell环境变量扩展语法,{{1} }。