Visual Studio Online Build - web.config连接字符串configSource

时间:2015-11-21 08:55:29

标签: c# build msbuild continuous-integration azure-devops

我的项目 Web.config 使用以下构造在单独的文件中定义了连接字符串:

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

在项目上进行协作或部署项目时,这很方便。但是,我无法让VSO Build工作,因为它向我显示以下错误:

  

C:\ Program Files   (x86)\ MSBuild \ 14.0 \ bin \ Microsoft.Common.CurrentVersion.targets(4105,   5)无法复制文件   “C:\ a \ 1 \ s \ MyProject \ ConnectionStrings.config”,因为它不是   找到。

2 个答案:

答案 0 :(得分:2)

必须已在web.config中定义连接字符串,并且连接字符串名称必须与您在Azure中设置的连接字符串名称相同。然后Azure可以更新连接字符串。请参阅Azure中的说明:

  

连接字符串以类似的方式工作,只需少量附加   需求。请记住,之前有一个连接字符串   称为“example-config_db”,已与网站相关联。   如果网站的web.config文件引用相同的连接字符串   在配置部分,然后是Windows Azure   网站将在运行时自动更新连接字符串   使用门户网站中显示的值。

     

但是,如果Windows Azure网站找不到连接字符串   使用来自web.config的匹配名称,然后是连接字符串   在门户网站中输入的内容仅作为环境提供   变量(如前所示)。

并且

  

请记住,对于Windows Azure网站来说,要覆盖   连接字符串并在.NET Framework中实现它   连接字符串配置集合,连接字符串必须   已经在web.config中定义。对于这个示例网站,   web.config已更新,如下所示:enter image description here

有关详细信息,请参阅此链接:https://azure.microsoft.com/en-us/blog/windows-azure-web-sites-how-application-strings-and-connection-strings-work/

答案 1 :(得分:1)

我知道你已经标记了你的问题,但我想我应该在这里发布我的解决方案给任何人都有同样的问题。 我在其他环境中为connectionStrings部分创建了一个转换,其虚拟连接字符串值如下所示:

  <connectionStrings xdt:Transform="Replace">
     <add name="Your_ConnectionString_Name" connectionString="dummy_value" 
               providerName="System.Data.SqlClient" />
  </connectionStrings>

这样我就可以在我的本地机器中保留configSource属性,当我部署到其他环境时,我有一些虚拟连接字符串供Azure替换。