C# 配置文件設置詳解

文章目錄

  • 1. 配置文件在 C# 項目中的作用和重要性
  • 2. 不同類型的配置文件
    • app.config
    • config.exe
    • json
  • 3. 創建和修改配置文件
    • 文件位置
    • 添加內容
    • 修改內容
    • 保存和加載
  • 4. 讀取和寫入配置文件
    • app.config 文件讀取
    • config.exe 文件寫入
    • JSON 文件讀寫
  • 5. 示例代碼演示
  • 6. 配置文件在安全性方面的注意事項
  • 7. 跨平臺配置文件的創建和應用
  • 總結

在這里插入圖片描述


在軟件開發過程中,配置文件是常用的一個功能,用于在程序運行時調整應用程序的行為。C# 提供了多種方式來創建和使用配置文件,使開發者可以靈活地管理應用程序的配置信息。本文將詳細介紹 C# 配置文件的創建、修改、讀取和寫入,以及跨平臺配置文件的應用。

1. 配置文件在 C# 項目中的作用和重要性

配置文件允許我們在不修改代碼的情況下,動態地調整應用程序的行為。這對于適應不同的運行環境、滿足不同用戶的需求以及方便維護和升級都非常重要。

例如,我們可以使用配置文件來存儲數據庫連接字符串、API 密鑰、應用設置等敏感信息,而不需要在代碼中硬編碼這些值。這樣,當需要更改這些信息時,只需修改配置文件即可,無需重新編譯和部署應用程序。

2. 不同類型的配置文件

C# 支持多種類型的配置文件,常見的有:

app.config

app.config 是 C#中最常用的配置文件類型。它通常位于項目的根目錄中,以 XML 格式存儲配置信息。app.config 文件可以包含多個配置節,如 appSettings、connectionStrings、system.web 等,用于存儲不同的配置信息。

config.exe

config.exe 是一種二進制格式的配置文件,通常用于 Windows 應用程序。它可以在程序啟動時加載,并在程序運行時動態修改。config.exe 文件的優點是加載速度快,但缺點是可讀性差,不適合存儲大量文本信息。

json

JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易于閱讀和編寫。在 C# 中,可以使用 Newtonsoft.Json 庫將 JSON 配置文件讀取為對象。JSON 配置文件適用于跨平臺應用程序,因為大多數現代編程語言都支持 JSON。

3. 創建和修改配置文件

文件位置

配置文件可以放置在項目的任何位置,但通常將其放在項目的根目錄或專門的配置文件夾中,以便于管理和訪問。

添加內容

以 app.config 文件為例,可以通過 XML 編輯器或代碼編輯器手動添加配置節和屬性。

<configuration><appSettings><add key="username" value="admin" /><add key="password" value="123456" /></appSettings>
</configuration>

修改內容

要修改配置文件中的內容,可以直接在 XML 編輯器中修改對應的鍵值對。

保存和加載

修改配置文件后,需要將其保存。配置文件的加載通常由 C# runtime 自動完成。

4. 讀取和寫入配置文件

app.config 文件讀取

using System.Configuration;class Program
{static void Main(string[] args){string username = ConfigurationManager.AppSettings["username"];Console.WriteLine("Username: " + username);}
}

config.exe 文件寫入

using System;
using System.Runtime.InteropServices;class Program
{[DllImport("kernel32")]private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);[DllImport("kernel32")]private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);static void Main(string[] args){string section = "appSettings";string key = "username";string val = "admin";string filePath = "app.config";WritePrivateProfileString(section, key, val, filePath);}
}

JSON 文件讀寫

using System.IO;
using Newtonsoft.Json;class Program
{static void Main(string[] args){string jsonFilePath = "appsettings.json";var settings = new ConfigurationBuilder().AddJsonFile(jsonFilePath, true, true)string username = settings["username"];
Console.WriteLine("Username: " + username);
} }

5. 示例代碼演示

以下是一個示例代碼,演示如何將配置文件內容應用于程序運行時參數:

using System;
using System.Configuration;class Program
{static void Main(string[] args){string connectionString = ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString;Console.WriteLine("Connection String: " + connectionString);// 使用配置文件中的設置int timeout = int.Parse(ConfigurationManager.AppSettings["RequestTimeout"]);Console.WriteLine("Request Timeout: " + timeout.ToString());}
}

在這個例子中,我們讀取了 connectionStrings 節中的 MyDatabase 連接字符串,以及 appSettings 節中的 RequestTimeout 設置。

6. 配置文件在安全性方面的注意事項

配置文件可能包含敏感信息,如數據庫密碼和API密鑰。為了保護這些信息,應采取以下措施:

  • 使用密碼學方法對配置文件進行加密。
  • 將配置文件放置在受保護的目錄中,防止未授權訪問。
  • 定期備份配置文件,以防丟失或損壞。

7. 跨平臺配置文件的創建和應用

跨平臺應用程序需要能夠在不同的操作系統和設備上運行。為了實現這一點,可以使用如 JSON 和屬性文件(.properties)等跨平臺配置格式。

例如,創建一個 JSON 配置文件 appsettings.json:

{"username": "admin","password": "123456","database": "mydatabase"
}

在 C# 代碼中讀取 JSON 配置文件:

using System.IO;
using Newtonsoft.Json;class Program
{static void Main(string[] args){string jsonFilePath = "appsettings.json";using (StreamReader r = new StreamReader(jsonFilePath)){string json = r.ReadToEnd();var settings = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);string username = settings["username"];Console.WriteLine("Username: " + username);}}
}

總結

C# 提供了多種配置文件類型,使開發者可以根據不同的需求和場景選擇合適的配置文件格式。在實際開發中,我們應該注意配置文件的安全性和跨平臺兼容性,以確保應用程序可以穩定運行并保護敏感信息。通過本文的介紹,希望你能更好地理解和掌握 C# 配置文件的使用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18396.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18396.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18396.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【kubernetes】關于k8s集群的污點、容忍、驅逐以及k8s集群故障排查思路

目錄 一、污點(Taint) 1.1污點介紹 1.2污點的組成格式 1.3當前 taint effect 支持如下三個選項&#xff1a; 1.4污點的增刪改查 1.4.1驗證污點的作用——NoExecute 1.4.2驗證污點的作用——NoSchedule 1.4.3 驗證污點的作用——PreferNoSchedule 1.5污點的配置與管理…

防刷發送短信驗證碼接口的五種簡單好用方法絕對夠用

防刷發送短信驗證碼接口的五種簡單好用方法&#xff0c;絕對夠用 前端增加圖形驗證碼&#xff0c;點擊發送按鈕后增加60s倒計時&#xff0c;60s后才可以再次點擊 后端對接口次數校驗&#xff0c;60s內同一電話號碼只能發送一次 // 生成基于電話號碼的重試鎖定鍵 String repeat…

MATLAB增強型鯨魚優化改進算法代碼復現實例

MATLAB增強型鯨魚優化改進算法代碼復現實例 MATLAB增強型鯨魚優化改進算法代碼復現實例

php反序列化學習(1)

1、php面向對象基本概念 類的定義&#xff1a; 類是定義了一件事物的抽象特征&#xff0c;它將數據的形式以及這些數據上的操作封裝住在一起。&#xff08;對象是具有類類型的變量&#xff0c;是對類的實例&#xff09; 構成&#xff1a; 成員變量&#xff08;屬性&#xf…

基于開源項目HAL STM32F4 +DSP庫跑SVPWM開環速度測試

HAL STM32F4 ARM DSP庫跑SVPWM開環速度測試 ?本篇硬件電路和代碼來源于此開源項目&#xff1a;https://github.com/MengYang-x/STM3F401-FOC/tree/main&#x1f4cd;硬件電路和項目介紹&#xff0c;立創開源廣場&#xff1a;https://oshwhub.com/shadow27/tai-yang-neng-wu-re…

走進智慧倉儲:3D可視化工廠園區革新物流新紀元

在快節奏的現代生活中&#xff0c;物流倉儲行業扮演著至關重要的角色。隨著科技的飛速發展&#xff0c;傳統倉儲模式正面臨一場前所未有的變革。今天&#xff0c;就讓我們一起看看3D可視化技術如何為物流行業帶來前所未有的便利與效率。 什么是3D可視化工廠園區&#xff1f; 3…

2024華為OD機試真題-最長子字符串的長度(一)-C++-OD統一考試(C卷D卷)

題目描述 給你一個字符串 s&#xff0c;首尾相連成一個環形&#xff0c;請你在環中找出 o 字符出現了偶數次最長子字符串的長度。 輸入描述 輸入是一個小寫字母組成的字符串 輸出描述 輸出是一個整數 備注 1 ≤ s.length ≤ 500000 s 只包含小寫英文字母 用例1 輸入 alol…

vim常用指令——001

vim常用指令 Vim的命令模式常用操作一、定位移動光標二、行的基本操作【復制、粘貼、刪除】三、查找、替換四、分屏命令 總結給大家總結下四個運行模式&#xff1a; Vim的命令模式常用操作 一、定位移動光標 按h&#xff1a;將光標向左移動一個字符&#xff0c;等同于方向鍵左…

UI學習筆記(二)—— 深入了解導航控制

「OC」UI學習筆記&#xff08;二&#xff09; 文章目錄 「OC」UI學習筆記&#xff08;二&#xff09;手動布局子視圖自動布局子視圖導航控制器高級使用 手動布局子視圖 //父視圖的.h文件 #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGINinterface JCSuperView : UIVie…

【最新區塊鏈論文錄用資訊】CCF A—INFOCOM 2024 共17篇

Conference&#xff1a;IEEE International Conference on Computer Communications CCF level&#xff1a;CCF A Categories&#xff1a;計算機網絡 Year&#xff1a;2024 Num&#xff1a;17 A Generic Blockchain-based Steganography Framework with High Capacity via …

Python: 使用pyotp實現OTP一次性密碼驗證

使用pyotp實現OTP一次性密碼驗證 OTP的基本原理 生成一個共享秘鑰作為隨機數的種子服務端通過種子計算出當前的密碼客戶端也通過相同的種子計算出當前的密碼驗證客戶端生成的密碼和服務端生成的密碼是否匹配 服務端和客戶端計算的方式一樣 共享密鑰 時間因子 算法 > 密…

多個文本如何一鍵導出二維碼?在線批量生碼的制作方法

當存在多條文本數據并且需要將每條數據生成單獨的二維碼來使用&#xff0c;很多小伙伴可能還在用一個一個來制作的方法&#xff0c;在二維碼生成器上將文本轉二維碼。這種方式操作起來比較的繁瑣&#xff0c;需要浪費大量的時間&#xff0c;那么有什么方法可以簡化這個過程嗎&a…

【Android-Compose】ViewModel 的 init 初始化函數中使用非主線程上的協程閃退問題

問題&#xff1a; 在 Compose- kotlin 中&#xff0c;如果在 ViewModel 中的 init 函數中使用非主線程上的協程會導致閃退問題&#xff0c; 具體代碼為&#xff1a; HiltViewModel class ApkScreenViewModel Inject constructor(... ) : ViewModel() {// 1. 在非 主線程的協程…

#學習方法#筆記#微信

飛鳥寫作是一個非常好用、靠譜且方便的論文寫作工具&#xff0c;可以幫助用戶高效地完成論文寫作任務。無論是學生還是研究人員&#xff0c;使用飛鳥寫作都能極大地提升寫作效率和質量。 首先&#xff0c;飛鳥寫作具有強大的查重降重功能&#xff0c;能夠幫助用戶快速檢測論文…

【數據庫】數據庫學習(MySQL,Oracle,PostgreSql)

數據庫語句學習 摘要&#xff1a;文章主要內容是數據庫語句的基本操作&#xff0c;以及一些基本的數據庫標準庫函數 重點&#xff1a;SQL語句對大小寫不敏感 數據庫操作語句 SELECT - 從數據庫表中獲取數據UPDATE - 更新數據庫表中的數據DELETE - 從數據庫表中刪除數據INSERT …

OSPF的擴展配置

1、認證——直連的鄰居或鄰接關系間,進行認證配置后,5種數據包中均攜帶身份核實的密碼&#xff0c;且華為設備會對更新信息進行加密--前提為認證方式選擇密文認證 1)接口認證 [r1-GigabitEthernet0/0/1ospf authentication-mode md5 1 cipher 123456 直連的鄰居間秘鑰和編號、模…

行列視(RCV)能否同時支持多個實時數據庫?

行列視&#xff08;RCV&#xff09;生產數據應用系統在設計時考慮到了多數據源的需求&#xff0c;因此它支持同時連接多個實時數據庫。這意味著用戶可以輕松地將來自不同實時數據庫的數據整合到行列視&#xff08;RCV&#xff09;系統中&#xff0c;實現數據的集中管理和分析。…

Android14 WMS-窗口添加流程(二)-Server端

上一篇文章講到了Client端窗口添加流程&#xff0c;本文接著上文往下講&#xff0c;講一下Server端的窗口添加流程。 1. WindowManagerService#grantInputChannel 由grantInputChannel我們可以看到&#xff0c;Client端傳入了session對象&#xff0c; 發起者Uid-callingUid&am…

X.509數字證書

在國密標準文件《GMT 0015-2012 基于SM2密碼算法的數字證書格式》里有對X.509數字證書格式的詳細描述。 數字證書的定義 由國家認可的&#xff0c;具有權威性、可信性和公正性的第三方證書認證機構&#xff08;CA&#xff09;進行數字簽名的一個可信的數字化文件。 數字證書…

YOLOv10代碼詳細介紹(附錄訓練教程和權重)

前言 YOLOv10 是清華大學研究人員在 UltralyticsPython 清華大學的研究人員在 YOLOv10軟件包的基礎上&#xff0c;引入了一種新的實時目標檢測方法&#xff0c;解決了YOLO 以前版本在后處理和模型架構方面的不足。通過消除非最大抑制&#xff08;NMS&#xff09;和優化各種模型…