【问题标题】:Permanently change connection string in app.config from code behind从后面的代码永久更改 app.config 中的连接字符串
【发布时间】:2014-03-21 07:16:36
【问题描述】:

我想要一些关于我正在开发的程序的帮助,我希望用户能够从我开发的表单中设置数据库连接字符串。我看过很多关于这方面的文章,包括许多关于堆栈溢出的答案,这些答案都有效,但没有一个会永久将连接写入 app.config 文件,这意味着当应用程序关闭时,连接字符串会保留它以前的值(在调试期间),我想知道是否有办法解决这个问题。

我已经尝试过了: How can i update app.config connectionstring Datasource value in C#?

这是我目前使用的:

http://www.codeproject.com/Questions/388444/How-change-connection-string-dynamically-in-csharp 请参阅解决方案 2

【问题讨论】:

  • 试试下面的答案:stackoverflow.com/a/1357453/1661209
  • 如果这个问题只是为了调试,那是因为你在构建项目的时候更新了配置文件,部署之后就不会再出现这个问题了。
  • 你需要重写配置文件,然后重启应用。
  • @Milan Raval 有趣,那么您是否建议当应用程序被打包并部署到客户端机器时,一旦他设置了连接字符串,即使他重新启动应用程序也不会再次更改?
  • 尝试更改 app.config 的一个问题是,如果应用程序安装在像 Program Files 这样的受保护文件夹中,您可能没有这样做的权限。

标签: c# winforms visual-studio-2010 sqlclient


【解决方案1】:

假设这是一个名为 WindowsFormsApplication1 的表单/控制台应用程序:

在调试模式下在 Visual Studio 中运行应用程序时,将更新的文件是:

bin\Debug\WindowsFormsApplication1.vshost.exe.Config

每次您终止调试会话时,此文件都会恢复到项目的 app.config 文件中包含的任何内容。

我现在没有时间解释这种行为的原因。

当您独立运行应用程序时,即不在 Visual Studio 中运行时,与您的应用二进制文件一起部署的 app.config 文件将是得到更新的文件。

例如,我将bin\Release 文件夹的输出(不包括任何*.vshost.* 文件)复制到项目结构之外的另一个目录,启动应用程序,果然我的配置更改确实保存到app.config

【讨论】:

  • 哦!谢谢我现在明白了,所以我不能在调试模式下真正永久地更新我的项目 app.config 文件中的设置。
  • 好像是这样。在我的脑海中,我明白为什么,但现在没有时间解释它:)
猜你喜欢
  • 1970-01-01
  • 2019-02-27
  • 2012-04-24
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
  • 2012-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多