Visual Studio Team Services 版本 XML 转换不起作用
Visual Studio Team Services release XML transformation doesn't work
Visual Studio 团队服务 - 构建和发布
在发布定义中,在文件转换和变量替换选项下,有 XML 转换和 XML 变量替换。
我选中了两个复选框,但在部署之后,我的 Web.Dev.config 中没有任何内容会替换 web.config。转变根本没有发生。
有什么问题?
--------编辑:详细信息--------
建设
这里所有的设置都是默认的。
发布
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="data source=tcp:xxxx.database.windows.net,1433;initial catalog=xxxx;User Id=xxxx@xxxx;Password=xxxx;App=EntityFramework"" 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>
--------编辑 2:不再有效--------
我按照在另一个 Azure 帐户中的新项目上建议的解决方案进行了操作,但是这次没有用。对于构建,我选择模板"Asp.net (preview)",对于发布,我选择模板"Azure App Service Deployment"。
--------编辑 3:发布 - 包或文件夹--------
您已经deployed/published web应用,所以web.config已经转换(对于web包部署,web.config中的相关值将在web部署时更新,值在 parameters.xml).
因此,已发布的文件夹中没有其他配置文件(例如 web.dev.config、web.release.config)并检查 XML 转换和XML变量替换没用。
根据构建日志,Web 应用程序使用 release 配置构建,但没有 web.release.config,所以 web.config.
没有更新
您可以参考以下步骤来达到您的要求:
- Publish/deploy 使用 文件系统 方式的网络应用程序(例如 /p:WebPublishMethod=FileSystem /p:publishUrl= $(build.artifactstagingdirectory)\)
- 添加复制文件步骤将其他配置文件(web.dev.config、web.prod.config 等)复制到已发布的文件夹(工件目录)
- 添加发布构建工件
- 对于发布,取消选中 使用 Web 部署发布 选项并指定 $(System.DefaultWorkingDirectory) 到 包或文件夹 。
Visual Studio 团队服务 - 构建和发布
在发布定义中,在文件转换和变量替换选项下,有 XML 转换和 XML 变量替换。
我选中了两个复选框,但在部署之后,我的 Web.Dev.config 中没有任何内容会替换 web.config。转变根本没有发生。
有什么问题?
--------编辑:详细信息--------
建设
这里所有的设置都是默认的。
发布
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="data source=tcp:xxxx.database.windows.net,1433;initial catalog=xxxx;User Id=xxxx@xxxx;Password=xxxx;App=EntityFramework"" 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>
--------编辑 2:不再有效--------
我按照在另一个 Azure 帐户中的新项目上建议的解决方案进行了操作,但是这次没有用。对于构建,我选择模板"Asp.net (preview)",对于发布,我选择模板"Azure App Service Deployment"。
--------编辑 3:发布 - 包或文件夹--------
您已经deployed/published web应用,所以web.config已经转换(对于web包部署,web.config中的相关值将在web部署时更新,值在 parameters.xml).
因此,已发布的文件夹中没有其他配置文件(例如 web.dev.config、web.release.config)并检查 XML 转换和XML变量替换没用。
根据构建日志,Web 应用程序使用 release 配置构建,但没有 web.release.config,所以 web.config.
没有更新您可以参考以下步骤来达到您的要求:
- Publish/deploy 使用 文件系统 方式的网络应用程序(例如 /p:WebPublishMethod=FileSystem /p:publishUrl= $(build.artifactstagingdirectory)\)
- 添加复制文件步骤将其他配置文件(web.dev.config、web.prod.config 等)复制到已发布的文件夹(工件目录)
- 添加发布构建工件
- 对于发布,取消选中 使用 Web 部署发布 选项并指定 $(System.DefaultWorkingDirectory) 到 包或文件夹 。