Visual Studio Team Services发布XML转换不起作用

时间:2017-05-07 00:25:20

标签: azure-pipelines-release-pipeline

Visual Studio Team Services - Build&释放

在发布定义中,在File Transforms&变量替换选项,有XML转换和XML变量替换。

我检查了两个复选框,但在部署之后,我的Web.Dev.config中没有任何内容替换web.config。转变根本不会发生。

有什么问题?

--------编辑:详细---------

构建

此处的所有设置均为默认值。

enter image description here

释放

enter image description here

web.dev.config

如果我从visual studio 2015部署,这种转换可以正常工作。

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Server=tcp:xxxx.database.windows.net,1433;Database=xxxx;User ID=xxx@xxx;Password=xxxx;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"  providerName="System.Data.SqlClient" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="NicoContext" connectionString="metadata=res://*/Nico.csdl|res://*/Nico.ssdl|res://*/Nico.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=tcp:xxxx.database.windows.net,1433;initial catalog=xxxx;User Id=xxxx@xxxx;Password=xxxx;App=EntityFramework&quot;" providerName="System.Data.EntityClient" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
  </system.web>
  <appSettings>
    <add key="Environment" value="Dev" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
    <add key="AzureStorageContainerName" value="xxx" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
    <add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx;EndpointSuffix=core.windows.net"  xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
    <add key="FacebookLoginAppId" value="xxx"   xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
    <add key="FacebookLoginAppSecret" value="xxx"   xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
  </appSettings>
</configuration>

enter image description here

--------编辑2:不再工作---------

我在另一个Azure帐户中的新项目上建议的解决方案,但这次它不起作用。对于构建,我选择模板“Asp.net(预览)”,对于发布,我选择模板“Azure App Service Deployment”。

enter image description here

enter image description here

--------编辑3:发布 - 包或文件夹---------

enter image description here

1 个答案:

答案 0 :(得分:3)

您已经部署/发布了Web应用程序,因此web.config已经转换(对于Web包部署,web.config中的相关值将在Web部署期间更新,值在参数中.XML )。

因此,在已发布的文件夹中没有其他配置文件(例如,web.dev.config,web.release.config),并检查 XML转换 XML变量替换没用。

根据构建日志,使用发布配置构建Web应用程序,但没有 web.release.config ,因此没有针对Web的更新的.config。

您可以参考以下步骤来达到您的要求:

  1. 使用文件系统方式发布/部署网络应用程序(例如/ p:WebPublishMethod = FileSystem / p:publishUrl = $(build.artifactstagingdirectory)\)
  2. 添加复制文件步骤将其他配置文件(web.dev.config,web.prod.config等)复制到已发布的文件夹(工件目录)
  3. 添加发布构建工件
  4. 要发布,请取消选中使用Web Deploy发布选项,并将$(System.DefaultWorkingDirectory)指定为包或文件夹