【问题标题】:Visual Studio Online Build - web.config connection strings configSourceVisual Studio Online Build - web.config 连接字符串 configSource
【发布时间】:2016-02-23 19:37:16
【问题描述】:

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

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

这在协作项目或部署项目时非常方便。但是,我无法让 VSO 构建工作,因为它显示了以下错误:

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

【问题讨论】:

  • 我这边没问题。您可以检查构建日志以查看 ConnectionStrings.config 文件是否已复制到构建代理?
  • 我没有将该文件添加到 git 中。 A) 密码安全 B) 我可以拥有与同事不同的数据库位置
  • 部署期间需要连接字符串。为了密码安全,您可以在配置文件中加密连接字符串。要想有不同的设置连接不同的数据库,可以使用 web.config 转换。
  • 当连接字符串在应用程序设置中直接在 azure 上设置并被 azure 自动覆盖时,我不确定为什么需要这样做。如果我没记错的话,他们为此创建了 configSource 选项,因此您无需将连接字符串(以任何形式)提交到源代码管理。

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


【解决方案1】:

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

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

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

请记住,Windows Azure 网站覆盖 连接字符串并在 .NET Framework 的 连接字符串配置集合,连接字符串必须 已在 web.config 中定义。对于此示例网站, web.config已经更新如下图:

欲了解更多信息,请查看此链接:https://azure.microsoft.com/en-us/blog/windows-azure-web-sites-how-application-strings-and-connection-strings-work/

【讨论】:

  • 我明白了,所以我应该用虚拟值定义那些连接字符串,不是吗?
  • 是的,就像屏幕截图中定义的字符串一样,并确保签入到 Git 的连接字符串。
  • 嗯,问题是如果你的connectionStrings元素包含configSource属性,那么你不能指定任何子元素。
【解决方案2】:

我知道您已经将您的问题标记为已回答,但我认为我应该在此处发布我的解决方案,以解决遇到相同问题的任何人。 我在其他环境中为 connectionStrings 部分创建了一个转换,其虚拟连接字符串值如下:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 2014-09-17
    • 2014-08-13
    • 2013-03-12
    相关资源
    最近更新 更多