【问题标题】:How to transform connection strings in app.config如何在 app.config 中转换连接字符串
【发布时间】:2020-02-13 07:57:02
【问题描述】:

我正在为 3 年前创建的一个相当大的项目开发 CI/CD 管道,它是一个 asp.net core 2.1 (.NET Framework) 项目。此项目将连接字符串存储在 EF 6 的 app.config 文件中。 我试图为这个项目创建 Web 部署包,但是 VS 无法检测到 app.config 中的连接字符串,我试图创建自定义 Parameters.xml 文件

<parameter name="OptagEntities-app.config Connection String" description="doesn't matter" defaultvalue="__OptagEntities__" tags="">
      <parameterentry kind="XmlFile" scope="\\app.config$" match="/configuration/connectionStrings/add[@name='OptagEntities']/@connectionString">
</parameterentry>

我已尝试将此项目部署到本地 IIS,我可以看到连接字符串未从 SetParameters.xml 文件中的值更新。我们有本地 TFS 服务器,并且相同的流程适用于 webform 项目。不同的是 Web config,这个项目使用的是 app.config,因为 asp.net core .NET 框架只在发布时创建 web.config。 我知道我可以使用 appsetting.json 来转换不同的 ENV,但它需要更改代码,最糟糕的是这个项目正在通过 nuget 引用另一个项目,该项目也在 app.config 中使用连接字符串。 有什么解决方法吗?

【问题讨论】:

  • 是 .NET Core 还是 .NET 框架?它们是不同的东西。
  • asp.net core 2.1 (.NET Framework)

标签: asp.net-core tfs tfsbuild msdeploy


【解决方案1】:

我使用代码打击在运行时更改 EF6 连接字符串,“myConnectionStrings”可以从 appsettings.json 加载

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
connectionStringsSection.ConnectionStrings["Entities"].ConnectionString = "myConnectionStrings";
config.Save();
ConfigurationManager.RefreshSection("connectionStrings");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 2012-04-24
    • 2023-04-04
    • 2010-09-06
    • 2017-04-18
    相关资源
    最近更新 更多