C#中解决字符串在编译后无法修改的情况

文章目录

一、配置文件

在C#等编程语言中,硬编码(直接在代码中写入)的字符串和其他配置信息在编译后就无法修改了,因为它们成为了程序的一部分。这在很多情况下是不方便的,尤其是当我们需要根据不同的部署环境(如开发、测试、生产)来改变这些值时。

配置文件允许开发者在不重新编译应用程序的情况下更改这些值。例如,数据库连接字符串、API密钥、服务端点地址等,都可以存储在配置文件中。当应用程序启动时,它会读取这些配置文件,并获取所需的配置信息。这样,如果需要更改配置,只需更改配置文件中的相应字符串,而无需更改代码并重新编译应用程序。

这种方法提高了应用程序的灵活性和可维护性,并且对于管理敏感信息也更加安全,因为我们可以避免在源代码中直接暴露这些信息。此外,配置文件还支持为不同的环境设置不同的配置,这在现代软件开发中是一个非常常见的需求。

常见的配置文件类型包括:

  1. app.configweb.config :这两种类型的配置文件通常用于.NET框架应用程序。app.config 用于Windows应用程序(如Windows窗体应用、控制台应用),而web.config 用于ASP.NET基于Web的应用程序。它们都是XML格式的文件,可以包含数据库连接字符串、应用程序设置、日志配置等。

  2. .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)

  1. 创建或编辑app.config文件

    在Visual Studio中的项目中,添加一个名为app.config的配置文件(如果尚未存在)。这个文件在编译时会被自动重命名为[应用程序名称].exe.config

  2. 编辑app.config文件

    app.config文件是一个XML文件,你可以在其中添加自定义的配置节或使用预定义的配置节,比如connectionStringsappSettings部分。例如:

    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>
  3. 在代码中读取配置

    使用System.Configuration命名空间下的ConfigurationManager类来读取配置信息。首先,确保项目引用了System.Configuration程序集。

    读取appSettings部分的设置:

    csharp 复制代码
    string setting1 = ConfigurationManager.AppSettings["Setting1"];

    读取数据库连接字符串:

    csharp 复制代码
    string connectionString = ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString;

对于.NET Core和.NET 5/6应用程序(使用appsettings.json)

  1. 创建或编辑appsettings.json文件

    在项目中添加一个名为appsettings.json的JSON格式的配置文件(如果尚未存在)。你也可以为不同的环境创建特定的配置文件,如appsettings.Development.json

  2. 编辑appsettings.json文件

    appsettings.json文件中,我们可以自由定义JSON结构来保存配置信息。例如:

    json 复制代码
    {
      "AppSettings": {
        "Setting1": "This is a setting"
      },
      "ConnectionStrings": {
        "DatabaseConnectionString": "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"
      }
    }
  3. 在代码中读取配置

    在.NET Core和.NET 5/6中,通常使用依赖注入来获取配置。首先,确保Microsoft.Extensions.Configuration包已经安装和配置。

    示例代码段(在Startup.cs或相应的初始化代码中):

    csharp 复制代码
    public IConfiguration Configuration { get; }
    
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    然后,在应用程序的任何部分,你可以通过IConfiguration接口读取配置信息:

    csharp 复制代码
    var 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(); 

运行后就得到了一个这样的文件:

用记事本打开就可以看到:

如果要修改信息,直接在这里面修改就好了。

相关推荐
wjs20248 分钟前
Chrome 浏览器:现代网络浏览的先锋
开发语言
爱学的小涛13 分钟前
【NIO基础】基于 NIO 中的组件实现对文件的操作(文件编程),FileChannel 详解
java·开发语言·笔记·后端·nio
吹老师个人app编程教学13 分钟前
详解Java中的BIO、NIO、AIO
java·开发语言·nio
爱学的小涛14 分钟前
【NIO基础】NIO(非阻塞 I/O)和 IO(传统 I/O)的区别,以及 NIO 的三大组件详解
java·开发语言·笔记·后端·nio
北极无雪18 分钟前
Spring源码学习:SpringMVC(4)DispatcherServlet请求入口分析
java·开发语言·后端·学习·spring
Java Fans30 分钟前
Oracle 数据库安装及配置
oracle
AAEllisonPang30 分钟前
Oracle 时间计算
数据库·oracle
AI视觉网奇41 分钟前
pymeshlab 学习笔记
开发语言·python
无情大菜刀1 小时前
C# 雷赛运动控制器 SMC304 新建工程
c#
木向1 小时前
leetcode42:接雨水
开发语言·c++·算法·leetcode