【问题标题】:MSBuild not recognizing computer name in response fileMSBuild 无法识别响应文件中的计算机名称
【发布时间】:2009-10-05 01:54:25
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: msbuild


    【解决方案1】:

    如果你使用%COMPUTERNAME%呢?

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

    【讨论】:

      猜你喜欢
      • 2019-11-02
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-17
      相关资源
      最近更新 更多