MSBuild无法使用web.config转换

9
我将翻译以下内容:

我正在为CI&D配置我的应用程序。 我创建了一个名为DEV-Deploy的web.config转换,其中包含用于开发测试环境的连接字符串。

Web config transforms

以下是Web.DEV-Deploy.config连接字符串部分的内容:

  <connectionStrings xdt:Transform="RemoveAttributes(configSource)">
    <add name="DbContext"
      providerName="MySql.Data.MySqlClient"
      connectionString="CXN_STRING"
      xdt:Transform="Insert" xdt:Locator="Match(name)"/>
    <add name="elmah"
      connectionString="CXN_STRING"
      xdt:Transform="Insert" xdt:Locator="Match(name)"/>
  </connectionStrings>

它应该看起来像这样:
  <connectionStrings>
    <add name="DbContext" providerName="MySql.Data.MySqlClient"
      connectionString="CXN_STRING"/>
    <add name="elmah" connectionString="CXN_STRING"/>
  </connectionStrings>

我正在使用命令行构建,已经尝试了以下两个命令,但都没有起作用:

msbuild web\web.csproj /T:Package /P:Configuration=DEV-Deploy /P:TransformConfigFiles=true
msbuild web\web.csproj /T:Package /P:Configuration=DEV-Deploy /t:TransformWebConfig

部署任务如下所示:
web.deploy.cmd /Y /M:https://MACHINEIP:8172/msdeploy.axd -allowUntrusted /U:USERNAME /P:PASSWORD /A:Basic

部署后,web.config 的内容如下:

<connectionStrings configSource="connectionStrings.config"></connectionStrings>

我已经尽力在我的本地机器上进行了测试,但无法复制这个问题。在构建过程中,我需要怎么做才能让变换正常工作?


1
这个问题似乎与编程无关,而是涉及错误路径(过于局部化),因此被认为是不适合讨论的。 - bummi
1个回答

3
我们的CI&D团队将构建/部署脚本放入源代码控制中,并在查看它们之后,发现上面的所有内容都是正确的,问题在于构建命令的路径是错误的,而命令本身是正确的。
一旦更新了路径,web.config就能够正确地进行转换。

请问您在 /T:Package 中使用了什么?我该如何创建一个“package”构建目标? - Julia McGuigan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接