文章目录
一、配置文件
在C#等编程语言中,硬编码(直接在代码中写入)的字符串和其他配置信息在编译后就无法修改了,因为它们成为了程序的一部分。这在很多情况下是不方便的,尤其是当我们需要根据不同的部署环境(如开发、测试、生产)来改变这些值时。
配置文件允许开发者在不重新编译应用程序的情况下更改这些值。例如,数据库连接字符串、API密钥、服务端点地址等,都可以存储在配置文件中。当应用程序启动时,它会读取这些配置文件,并获取所需的配置信息。这样,如果需要更改配置,只需更改配置文件中的相应字符串,而无需更改代码并重新编译应用程序。
这种方法提高了应用程序的灵活性和可维护性,并且对于管理敏感信息也更加安全,因为我们可以避免在源代码中直接暴露这些信息。此外,配置文件还支持为不同的环境设置不同的配置,这在现代软件开发中是一个非常常见的需求。
常见的配置文件类型包括:
-
app.config 和 web.config :这两种类型的配置文件通常用于.NET框架应用程序。
app.config
用于Windows应用程序(如Windows窗体应用、控制台应用),而web.config
用于ASP.NET基于Web的应用程序。它们都是XML格式的文件,可以包含数据库连接字符串、应用程序设置、日志配置等。 -
.json 配置文件 :在.NET Core 和 .NET 5/6 应用程序中,配置信息通常存储在JSON格式的文件中,例如
appsettings.json
。与XML格式的配置文件相比,JSON文件通常更加简洁易读。appsettings.json
文件可以包含环境特定的设置,例如开发环境和生产环境可能使用不同的数据库连接字符串。
使用配置文件的好处包括:
- 灵活性:应用程序的配置可以在不重新编译代码的情况下进行更改,这对于调整设置和修正问题非常有用。
- 环境适应性:可以为不同的运行环境(如开发环境、测试环境、生产环境)创建不同的配置文件,从而使同一份代码基础能够适用于多个环境。
- 安全性:敏感信息,如数据库的连接字符串,可以从代码中分离出来,通过使用加密或其他安全机制来保护配置文件,提升应用程序的安全性。
- 易于维护:由于配置信息集中存储,应用程序的配置和管理相对而言更加集中和简单。
在C#程序中,可以使用.NET框架或.NET Core提供的API来读取和管理这些配置文件中的设置,使得开发者能够以编程方式访问并利用这些配置信息。
二、使用方式
在Windows应用程序中使用配置文件,通常指的是使用app.config
文件(对于.NET Framework应用程序)或appsettings.json
文件(对于.NET Core和.NET 5/6应用程序)。以下分别说明这两种情况下如何使用配置文件:
对于.NET Framework应用程序(使用app.config)
-
创建或编辑app.config文件
在Visual Studio中的项目中,添加一个名为
app.config
的配置文件(如果尚未存在)。这个文件在编译时会被自动重命名为[应用程序名称].exe.config
。 -
编辑app.config文件
app.config
文件是一个XML文件,你可以在其中添加自定义的配置节或使用预定义的配置节,比如connectionStrings
或appSettings
部分。例如:xml<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="Setting1" value="This is a setting"/> </appSettings> <connectionStrings> <add name="DatabaseConnectionString" connectionString="Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"/> </connectionStrings> </configuration>
-
在代码中读取配置
使用
System.Configuration
命名空间下的ConfigurationManager
类来读取配置信息。首先,确保项目引用了System.Configuration
程序集。读取
appSettings
部分的设置:csharpstring setting1 = ConfigurationManager.AppSettings["Setting1"];
读取数据库连接字符串:
csharpstring connectionString = ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString;
对于.NET Core和.NET 5/6应用程序(使用appsettings.json)
-
创建或编辑appsettings.json文件
在项目中添加一个名为
appsettings.json
的JSON格式的配置文件(如果尚未存在)。你也可以为不同的环境创建特定的配置文件,如appsettings.Development.json
。 -
编辑appsettings.json文件
在
appsettings.json
文件中,我们可以自由定义JSON结构来保存配置信息。例如:json{ "AppSettings": { "Setting1": "This is a setting" }, "ConnectionStrings": { "DatabaseConnectionString": "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;" } }
-
在代码中读取配置
在.NET Core和.NET 5/6中,通常使用依赖注入来获取配置。首先,确保
Microsoft.Extensions.Configuration
包已经安装和配置。示例代码段(在
Startup.cs
或相应的初始化代码中):csharppublic IConfiguration Configuration { get; } public Startup(IConfiguration configuration) { Configuration = configuration; }
然后,在应用程序的任何部分,你可以通过
IConfiguration
接口读取配置信息:csharpvar setting1 = Configuration["AppSettings:Setting1"]; var connectionString = Configuration.GetConnectionString("DatabaseConnectionString");
以上就是在.NET Framework和.NET Core/.NET 5/6 Windows应用程序中使用配置文件的基本方法。
三、应用实例
比如我们要用配置文件存储连接数据库的信息,如下:
private static string connString =
"Server=DESKTOP-1JMUPMG\\MSSQLSERVER1;DataBase=StudentManageDB;Uid=sa;Pwd=151423qwe,+";
这是我们连接数据库的信息,注意这里面的数据库用户名是DESKTOP-1JMUPMG\MSSQLSERVER1,可以发现里面少了一个斜杠,这是因为在编译的时候一个"\",需要用"\"才能表示,要记住这个细节。
接下来我们配置App.config文件,首先注意第一点,这个文件一定要添加在我们的根目录中,也就是我们的最开始的项目,最主要的那个项目。右击这个项目,添加新建项,选择如下,注意一定不要改名字:
接下来我们看到:
需要在其中添加:
具体内容:
<connectionStrings>
<add name="connString" connectionString =
"Server=DESKTOP-1JMUPMG\MSSQLSERVER1;DataBase=StudentManageDB;Uid=sa;Pwd=151423qwe,+"/>
</connectionStrings>
注意和前面的信息做一下对比。这里不用担心"\"的问题,也就不用多加一个斜杠符号了。
接下来我们需要在使用到这段信息的项目中添加一个System.Configuration的引用,并在最上方写好:
using System.Configuration; //引入读取配置文件的命名空间
然后我们只需要写下面这样的代码:
public static string connString = ConfigurationManager.ConnectionStrings[""].ToString();
运行后就得到了一个这样的文件:
用记事本打开就可以看到:
如果要修改信息,直接在这里面修改就好了。