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(); 

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

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

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

相关推荐
何曾参静谧8 分钟前
「Py」Python基础篇 之 Python都可以做哪些自动化?
开发语言·python·自动化
Prejudices12 分钟前
C++如何调用Python脚本
开发语言·c++·python
我狠狠地刷刷刷刷刷25 分钟前
中文分词模拟器
开发语言·python·算法
wyh要好好学习28 分钟前
C# WPF 记录DataGrid的表头顺序,下次打开界面时应用到表格中
开发语言·c#·wpf
AitTech29 分钟前
C#实现:电脑系统信息的全面获取与监控
开发语言·c#
qing_04060331 分钟前
C++——多态
开发语言·c++·多态
孙同学_31 分钟前
【C++】—掌握STL vector 类:“Vector简介:动态数组的高效应用”
开发语言·c++
froginwe1132 分钟前
XML 编辑器:功能、选择与使用技巧
开发语言
Jam-Young38 分钟前
Python的装饰器
开发语言·python
小辛学西嘎嘎1 小时前
C/C++精品项目之图床共享云存储(3):网络缓冲区类和main
c语言·开发语言·c++