首页 > 编程语言 >C#开发的应用的应用配置文件

C#开发的应用的应用配置文件

时间:2024-08-08 14:06:08浏览次数:7  
标签:exe 配置文件 C# 配置 System 应用程序 应用 config

注意:.net core和.net5+为appsettings.json

一、应用配置文件

在C#应用程序中,`.exe.config`文件(通常称为应用程序配置文件)是一个XML文件,用于存储应用程序的配置设置。这些设置可以包括数据库连接字符串、应用程序特定的设置、外部库的配置等。配置文件的名称通常与应用程序的可执行文件名匹配,并以 `.config` 结尾。例如,如果你的应用程序名为 `MyApp.exe`,那么相应的配置文件名通常为 `MyApp.exe.config`。

 配置文件的结构

一个典型的 `.exe.config` 文件的结构如下:

```xml
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Setting1" value="Value1" />
<add key="Setting2" value="Value2" />
</appSettings>
<connectionStrings>
<add name="MyDatabase" connectionString="Server=myServer;Database=myDB;User Id=myUser;Password=myPass;" providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="true" />
</system.web>
<!-- 其他配置节 -->
</configuration>
```

### 常见的配置节
1. **appSettings**:用于存储简单的键值对配置。
```xml
<appSettings>
<add key="Setting1" value="Value1" />
<add key="Setting2" value="Value2" />
</appSettings>
```

2. **connectionStrings**:用于存储数据库连接字符串。
```xml
<connectionStrings>
<add name="MyDatabase" connectionString="Server=myServer;Database=myDB;User Id=myUser;Password=myPass;" providerName="System.Data.SqlClient" />
</connectionStrings>
```

3. **system.web**:用于配置与ASP.NET相关的设置(主要用于Web应用程序)。
```xml
<system.web>
<compilation debug="true" />
</system.web>
```

### 读取配置文件中的设置
在C#代码中,可以通过以下方式读取配置文件中的设置:

1. **读取appSettings**:
```csharp
using System;
using System.Configuration;

class Program
{
static void Main()
{
string setting1 = ConfigurationManager.AppSettings["Setting1"];
Console.WriteLine("Setting1: " + setting1);
}
}
```

2. **读取connectionStrings**:
```csharp
using System;
using System.Configuration;

class Program
{
static void Main()
{
string connectionString = ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString;
Console.WriteLine("Connection String: " + connectionString);
}
}
```

 

使用配置文件的好处

- **集中管理配置**:所有的配置都集中在一个文件中,便于管理和修改。
- **环境独立**:可以为不同的环境(如开发、测试、生产)提供不同的配置文件,而无需修改代码。
- **易于部署**:配置文件可以在部署时进行修改,以适应不同的部署环境。

注意事项

- 配置文件中的敏感信息(如密码)应当妥善保护,可以使用加密技术对其进行保护。
- 修改配置文件后,通常不需要重新编译应用程序,但可能需要重新启动应用程序以使更改生效。

 

二、如何配置配置文件

配置 `.exe.config` 文件主要涉及将所需的配置项添加到文件中,并确保它们的格式和结构正确。以下是一些常见的配置场景,以及如何在 `.exe.config` 文件中进行配置。

### 1. 基本配置结构

一个基本的 `.exe.config` 文件结构如下:

```xml
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!-- 键值对配置 -->
<add key="Setting1" value="Value1" />
<add key="Setting2" value="Value2" />
</appSettings>

<connectionStrings>
<!-- 数据库连接字符串配置 -->
<add name="MyDatabase" connectionString="Server=myServer;Database=myDB;User Id=myUser;Password=myPass;" providerName="System.Data.SqlClient" />
</connectionStrings>

<!-- 其他配置节 -->
</configuration>
```

### 2. 配置 `appSettings`

`appSettings` 节用于存储简单的键值对配置。你可以在这个节中添加你需要的配置项。

```xml
<appSettings>
<add key="Setting1" value="Value1" />
<add key="Setting2" value="Value2" />
</appSettings>
```

### 3. 配置 `connectionStrings`

`connectionStrings` 节用于存储数据库连接字符串。你可以在这个节中添加数据库的连接信息。

```xml
<connectionStrings>
<add name="MyDatabase" connectionString="Server=myServer;Database=myDB;User Id=myUser;Password=myPass;" providerName="System.Data.SqlClient" />
</connectionStrings>
```

### 4. 配置 `system.web`

如果你的应用程序是一个ASP.NET应用程序,你可能需要配置 `system.web` 节来设置与ASP.NET相关的配置。

```xml
<system.web>
<compilation debug="true" />
<authentication mode="Forms">
<forms loginUrl="Login.aspx" timeout="30" />
</authentication>
</system.web>
```

### 5. 自定义配置节

你也可以定义和使用自定义的配置节。首先,你需要在 `configSections` 节中声明自定义节,然后在 `configuration` 节中使用它。

```xml
<configuration>
<configSections>
<section name="myCustomSection" type="Namespace.MyCustomSection, AssemblyName" />
</configSections>

<myCustomSection>
<setting name="CustomSetting1" value="CustomValue1" />
</myCustomSection>
</configuration>
```

6. 加密配置节

对于敏感信息(如数据库连接字符串),你可以使用加密技术来保护这些信息。以下是加密 `connectionStrings` 节的示例:

```sh
aspnet_regiis -pe "connectionStrings" -app "/MyApplication" -prov "DataProtectionConfigurationProvider"
```

7. 读取配置文件中的设置

在C#代码中,你可以使用 `ConfigurationManager` 类来读取配置文件中的设置。

读取 `appSettings`:

```csharp
using System;
using System.Configuration;

class Program
{
static void Main()
{
string setting1 = ConfigurationManager.AppSettings["Setting1"];
Console.WriteLine("Setting1: " + setting1);
}
}
```

#### 读取 `connectionStrings`:

```csharp
using System;
using System.Configuration;

class Program
{
static void Main()
{
string connectionString = ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString;
Console.WriteLine("Connection String: " + connectionString);
}
}
```
8. 自定义配置节类

如果你定义了自定义配置节,你需要创建一个对应的类来读取这些配置。

```csharp
using System.Configuration;

public class MyCustomSection : ConfigurationSection
{
[ConfigurationProperty("setting")]
public SettingElement Setting
{
get { return (SettingElement)this["setting"]; }
set { this["setting"] = value; }
}
}

public class SettingElement : ConfigurationElement
{
[ConfigurationProperty("name", IsRequired = true)]
public string Name
{
get { return (string)this["name"]; }
set { this["name"] = value; }
}

[ConfigurationProperty("value", IsRequired = true)]
public string Value
{
get { return (string)this["value"]; }
set { this["value"] = value; }
}
}

// 使用自定义配置节
MyCustomSection customSection = (MyCustomSection)ConfigurationManager.GetSection("myCustomSection");
Console.WriteLine(customSection.Setting.Name);
Console.WriteLine(customSection.Setting.Value);
```

 

 总结

配置 `.exe.config` 文件的过程主要是根据应用程序的需求,添加和组织所需的配置节,并在代码中读取这些配置。通过正确配置和使用 `.exe.config` 文件,可以使应用程序更加灵活和易于管理。

三、代码中读取配置

3.1 引用必要的命名空间

在你的C#代码中,确保引用 System.Configuration 命名空间:

using System;
using System.Configuration;

  

3.2 读取 appSettings

使用 ConfigurationManager 类读取 appSettings 中的配置项:

class Program
{
    static void Main()
    {
        string setting1 = ConfigurationManager.AppSettings["Setting1"];
        Console.WriteLine("Setting1: " + setting1);
    }
}

  

四、部署

在部署应用程序时,确保将生成的 YourApplicationName.exe.config 文件与可执行文件一起部署。这个文件通常位于输出目录(例如 bin\Debug 或 bin\Release)中。

五、高级配置

5.1 自定义配置节

如果需要自定义配置节,可以在 App.config 中定义新的配置节,并在代码中创建相应的类来读取这些配置。

<configuration>
  <configSections>
    <section name="myCustomSection" type="Namespace.MyCustomSection, AssemblyName" />
  </configSections>
  
  <myCustomSection>
    <setting name="CustomSetting1" value="CustomValue1" />
  </myCustomSection>
</configuration>

  

在代码中定义相应的类:

using System.Configuration;

public class MyCustomSection : ConfigurationSection
{
    [ConfigurationProperty("setting")]
    public SettingElement Setting
    {
        get { return (SettingElement)this["setting"]; }
        set { this["setting"] = value; }
    }
}

public class SettingElement : ConfigurationElement
{
    [ConfigurationProperty("name", IsRequired = true)]
    public string Name
    {
        get { return (string)this["name"]; }
        set { this["name"] = value; }
    }

    [ConfigurationProperty("value", IsRequired = true)]
    public string Value
    {
        get { return (string)this["value"]; }
        set { this["value"] = value; }
    }
}

// 使用自定义配置节
MyCustomSection customSection = (MyCustomSection)ConfigurationManager.GetSection("myCustomSection");
Console.WriteLine(customSection.Setting.Name);
Console.WriteLine(customSection.Setting.Value);

  

六、和清单文件的差异

在Visual Studio项目中,`.exe.config` 文件(也称为应用程序配置文件)和清单文件(manifest file)是两个不同的文件类型,分别用于不同的目的。以下是它们的主要区别和用途:

 应用程序配置文件(`.exe.config`)

 1. 目的
应用程序配置文件用于存储应用程序的可配置设置,如数据库连接字符串、应用程序设置、日志配置等。这些设置可以在运行时读取和更改,而无需重新编译应用程序。

 2. 位置
配置文件通常命名为 `App.config`,在编译时会被复制并重命名为 `YourApplicationName.exe.config`,存放在输出目录中(如 `bin\Debug` 或 `bin\Release`)。

 3. 格式
配置文件是XML格式的,包含不同的配置节,如 `appSettings`、`connectionStrings`、自定义配置节等。

 4. 示例

xml
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Setting1" value="Value1" />
<add key="Setting2" value="Value2" />
</appSettings>

<connectionStrings>
<add name="MyDatabase" connectionString="Server=myServer;Database=myDB;User Id=myUser;Password=myPass;" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>

  

5. 读取方式
在C#代码中,使用 `ConfigurationManager` 类读取配置文件中的设置:

csharp
using System;
using System.Configuration;

class Program
{
static void Main()
{
string setting1 = ConfigurationManager.AppSettings["Setting1"];
Console.WriteLine("Setting1: " + setting1);
}
}

  

清单文件(Manifest File)

1. 目的
清单文件用于描述应用程序的元数据,如应用程序的依赖关系、请求的权限、Windows版本兼容性、UAC(用户帐户控制)设置等。它主要用于配置应用程序的运行时行为和环境。

2. 位置
清单文件通常与应用程序的可执行文件一起放置,命名为 `YourApplicationName.exe.manifest`。在Visual Studio中,它通常被嵌入到应用程序的资源中。

3. 格式
清单文件也是XML格式的,包含应用程序的元数据和配置信息。

4. 示例

xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<description>My Application</description>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" />
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> <!-- Windows 10 -->
</application>
</compatibility>
</assembly>

  

 5. 配置方式
在Visual Studio中,可以通过项目属性来配置清单文件:
1. 右键点击项目,选择“属性”。
2. 在“应用程序”选项卡中,点击“视图 Windows 设置”。
3. 在“视图 Windows 设置”对话框中,可以编辑清单文件。

 总结

- **应用程序配置文件(`.exe.config`)**:用于存储应用程序的可配置设置,可以在运行时读取和更改。
- **清单文件(Manifest File)**:用于描述应用程序的元数据和运行时行为,配置应用程序的依赖关系、权限和兼容性。

这两个文件虽然都是XML格式,但它们的用途和内容完全不同,分别用于不同的配置需求。



 

标签:exe,配置文件,C#,配置,System,应用程序,应用,config
From: https://www.cnblogs.com/xietianjiao/p/18348827

相关文章

  • Investigating Locks in MySQL
    InvestigatingLocksinMySQLhttps://emmer.dev/blog/investigating-locks-in-mysql/AcrashcourseonlocksMySQL(andmostrelationaldatabases)haveafewdifferenttypesoflockstolimitconcurrentaccessfromdifferentsessions,protectingschemaand......
  • Apple Intelligence提示词曝光:Do not hallucinate;XLabs-AI 又发布两个脚本x-flux;吴恩
    ✨1:Somepre-promptinstructionsforAppleAppleIntelligence提示词曝光:Donothallucinate苹果在其最新的开发者测试版中推出了一些生成型AI功能,这些功能已经在WWDC大会上宣布,计划在未来几个月内陆续登陆iPhone、iPad和Mac等设备。一位用户在macOS15.1开发者测......
  • 神鸟云PCDN业务招募
    短Z业务--支持nat0~nat4  省内调度,晚高峰 跑量9成+ 配置要求: 线路:单条上行30M+  硬件:32线程 64内存条 240G系统盘 1G:2T固态盘单价:移动1900电联2500镜像下载:http://oss.download.birdicloud.com/box/CentOS7-v1.1.3-2407121744.iso长N业务--高跑量低配置......
  • [CSP-J 2023] 小苹果
    [CSP-J2023]小苹果【官方数据】题目描述小Y的桌子上放着 nn 个苹果从左到右排成一列,编号为从 11 到 nn。小苞是小Y的好朋友,每天她都会从中拿走一些苹果。每天在拿的时候,小苞都是从左侧第 11 个苹果开始、每隔 22 个苹果拿走 11 个苹果。随后小苞会将剩下......
  • [CSP-S 2023] 密码锁
    题目描述小Y有一把五个拨圈的密码锁。如图所示,每个拨圈上是从 00 到 99 的数字。每个拨圈都是从 00 到 99 的循环,即 99 拨动一个位置后可以变成 00 或 88,因为校园里比较安全,小Y采用的锁车方式是:从正确密码开始,随机转动密码锁仅一次;每次都是以某个幅度仅转......
  • elasticsearch: 指定索引数据的保存目录
    一,查看节点的fs得到索引数据的保存目录说明:修改索引数据的保存目录,通常是因为要把数据单独保存到服务器专用的数据盘,方便扩展\管理\备份等访问:http://localhost:9200/_nodes/stats/fs 也可以从命令行访问:[root@lhdpcelasticsearch]#curl-XGET"localhost:9200/_no......
  • Codeforces Round 964 (Div. 4) D. Slavic's Exam
    题目链接:https://codeforces.com/contest/1999/problem/D题目描述Slavic的考试非常难,需要您的帮助才能通过。以下是他正在努力解决的问题:存在一个字符串s,它由小写英文字母和可能零个或多个“?”组成。Slavic被要求将每个“?”更改为小写英文字母,使得字符串t成为字符串s的......
  • from type [java.lang.String] to type [org. apache.kafka.clients.consumer.Consume
    kafka消费消息的时候,报错Noconverterfoundcapableofconvertingfromtype[java.lang.String]totype[org.apache.kafka.clients.consumer.ConsumerRecord<??>,没有消费到数据,这种情况可能是发送方发送的数据是封装了多个ConsumerRecord<??>对象发送过来的,需要用Consume......
  • IgniteFAQ-2-CacheWriterException: Failed to write entries in database
    ignite同步或者异步落库数据到DB时,如果因为落库的数据不满足db库的要求,如长度、精度、nonull等限制,就会出现落库失败报Failedtowriteentriesindatabase错误。ignite异步落库默认时5秒或者10240条flush一次,失败的数据会不断尝试,当存在一条数据以为数据库要求失败时,会卡住此表......
  • ModbusRtuOverTcp读写操作
     .NET免费开源工业物联网网关-小码编匠-博客园(cnblogs.com)IoTClient:IoTClient是一个物联网设备通讯协议实现客户端,将包括主流PLC通信读取、ModBus协议、Bacnet协议等常用工业通讯协议。本组件终身开源免费,采用最宽松MIT协议,您也可以随意修改和商业使用(商业使用请做......