【发布时间】:2009-10-05 01:54:25
【问题描述】:
我们有一个标准的 MSBuild 项目文件,用于我们的不同部署阶段(前期、阶段、现场等)。由于每个部署阶段都在不同的服务器上执行,我们引入了一个名为 $SourceDatabaseServer 的服务器参数,并在项目文件中的每个目标中广泛使用了它。注意:此数据库服务器名称可能与运行构建的服务器名称不同。
为了帮助我们自定义此参数,我们为每个部署阶段创建了一个响应文件,随后在响应文件中为该参数定义了一个值,例如/p:SourceDatabaseServer=SRC_DB_NAME.
这工作正常,直到我们创建了一个新的部署阶段,在该阶段该值必须是当前计算机名称。因此,我们认为通过在响应文件 (/p:SourceDatabaseServer=$(COMPUTERNAME)) 中使用 $(COMPUTERNAME) 保留属性,可以解决问题,但似乎这个值是由 MSBuild 逐字解释的,因此我们收到服务器 $(ComputerName) 的错误找不到。
有趣的是,当$(COMPUTERNAME) 属性直接在 proj 文件中使用时,它可以工作,但如上所述,我们不一定要在所有情况下都使用计算机名。
有没有办法在响应文件中仍然使用 $(COMPUTERNAME) 属性并让 MSBuild 正确解释它?
【问题讨论】:
标签: msbuild