我在C#.NET中完成了一个项目,其中我的数据库文件是一个Excel工作簿。由于连接字符串的位置在我的编码中是硬编码的,所以在我的系统中安装它没有问题,但是对于其他系统来说。
有没有办法在应用程序设置完成后提示用户设置路径一次?
我得到的答案是“使用App.Config”...任何人都可以告诉这个App.config是什么以及如何在我的上下文中使用它?
最简单的是,app.config是一个XML文件,其中包含许多预定义的配置节,并支持自定义配置节。 “配置部分”是XML的片段,其具有用于存储某种类型的信息的模式。
可以使用内置配置部分(如connectionStrings
或appSettings
)配置设置。您可以添加自己的自定义配置部分;这是一个高级主题,但对于构建强类型配置文件非常强大。
Web应用程序通常具有web.config,而Windows GUI /服务应用程序具有app.config文件。
应用程序级配置文件从全局配置文件继承设置,例如machine.config。
连接字符串具有可以使用的预定义模式。请注意,这个小片段实际上是一个有效的app.config(或web.config)文件:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="MyKey"
connectionString="Data Source=localhost;Initial Catalog=ABC;"
providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
一旦定义了app.config,就可以使用ConfigurationManager类在代码中读取它。不要被详细的MSDN示例吓倒;它实际上非常简单。
string connectionString = ConfigurationManager.ConnectionStrings["MyKey"].ConnectionString;
经常更改* .config文件通常不是一个好主意,但听起来你只想执行一次性设置。
请参阅:Change connection string & reload app.config at run time,其中介绍了如何在运行时更新* .config文件的connectionStrings
部分。
请注意,理想情况下,您将从简单的安装程序执行此类配置更改。
问:假设我在app.config中手动更改了一些<value>
,保存然后关闭它。现在,当我转到我的bin文件夹并从此处启动.exe文件时,为什么它不反映应用的更改?
答:编译应用程序时,其app.config将复制到bin directory1,其名称与exe匹配。例如,如果您的exe命名为“test.exe”,则bin目录中应该有“text.exe.config”。您可以在不重新编译的情况下更改配置,但是您需要编辑在编译时创建的配置文件,而不是原始的app.config。
1:请注意,web.config文件不会移动,而是在编译和部署时保留在同一位置。一个例外是web.config是transformed。
.NET Core引入了新的配置选项。 * .config文件的工作方式似乎没有改变,但开发人员可以自由选择新的,更灵活的配置范例。
简单地说,App.config是一种基于XML
的文件格式,它保存了应用程序级配置。
例:
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="key" value="test" />
</appSettings>
</configuration>
您可以使用ConfigurationManager
访问配置,如下面的代码段所示:
var value = System.Configuration.ConfigurationManager.AppSettings["key"];
// value is now "test"
注意:ConfigurationSettings
是检索配置信息的过时方法。
var value = System.Configuration.ConfigurationSettings.AppSettings["key"];
App.Config是一个XML文件,用作应用程序的配置文件。换句话说,您可以在其中存储您可能想要更改的任何设置,而无需更改代码(并重新编译)。它通常用于存储连接字符串。
请参阅此MSDN文章,了解如何执行此操作:http://msdn.microsoft.com/en-us/library/ms254494(v=vs.80).aspx
只是为了添加我在所有答案中遗漏的东西 - 即使你知道它们似乎很愚蠢和明显:
该文件必须命名为“App.config”或“app.config”,并且可以在与您的项目相同的级别中找到。 Program.cs中。
我不知道其他位置是否可行,其他名称(如application.conf,如ODP.net文档中所建议的)对我不起作用。
PS。我从Visual Studio Code开始,用“dotnet new”创建了一个新项目。在这种情况下没有创建配置文件,我确信还有其他情况。 PPS。您可能需要添加一个nuget包才能读取配置文件,在.NET CORE的情况下,它将是“dotnet add package System.Configuration.ConfigurationManager --version 4.5.0”
您可以使用以下方法访问App.Config中的键:
ConfigurationSettings.AppSettings["KeyName"]
看看qazxsw poi