WinFrom项目结构

news/2025/1/15 14:22:16/文章来源:https://www.cnblogs.com/ouyangkai/p/18406726

示例项目结构

在 Visual Studio 中创建一个 WinForms 应用程序后,项目结构如下所示:

MyWinFormsApp/
│
├───Properties/
│   └───Settings.settings
│
├───bin/
│   ├───Debug/
│   └───Release/
│
├───obj/
│   ├───Debug/
│   └───Release/
│
├───Form1.cs
├───Form1.Designer.cs
├───Form1.resx
├───Program.cs
├───App.config
└───MyWinFormsApp.csproj
  • Properties/ 目录包含应用程序的设置文件。
  • bin/ 和 obj/ 目录包含构建输出和中间文件。
  • Form1.cs 是窗体的主要代码文件。
  • Form1.Designer.cs 是自动生成的窗体设计器代码。
  • Form1.resx 是窗体的资源文件。
  • Program.cs 是应用程序的入口点,包含 Main 方法。
  • App.config 是应用程序的配置文件。
  • MyWinFormsApp.csproj 是项目的工程文件,包含项目的所有配置信息。

Properties目录

Properties 目录是应用程序配置和资源文件的存储位置。通常由 Visual Studio 自动管理,包含以下关键文件和子目录:

  1. AssemblyInfo.cs:
    • 包含程序集的元数据,如版本号、版权信息、程序集特性等。
    • 编译时嵌入到程序集中。
  2. Resources.resx:
    • 存储应用程序的非编码资源,如图像、图标、字符串等。
    • 通过强类型属性在代码中访问,便于资源管理。
  3. Settings.settings:
    • 存储应用程序的设置,如数据库连接字符串、用户偏好设置等。
    • 运行时通过 Properties.Settings 类访问和修改。
  4. Resources 子目录:
    • 存放应用程序的资源文件,如图像、音频等。
    • 通过 Resources.resx 文件管理。

bin和obj目录

bin 目录

bin 目录是二进制目录,用于存放编译后的程序集(.dll 或 .exe 文件)。

  • Debug:存放调试版本的输出文件。这些文件包含了调试信息,使得开发者可以在调试器中检查代码的执行情况。
  • Release:存放发布版本的输出文件。这些文件不包含调试信息,通常进行了优化,以提高应用程序的性能。

在 bin 目录中,你还可以找到其他与编译相关的文件,如:

  • pdb 文件:程序数据库文件,包含了调试信息,如变量名、类型信息和代码行号等。
  • config 文件:应用程序配置文件,如 app.config 或 web.config。
  • xml 文件:有时编译器会生成 XML 文档文件,包含了代码的注释和文档信息。

obj 目录

obj 目录是对象目录,用于存放编译过程中的中间文件。

  • Debug 和 Release:与 bin 目录类似,obj 目录也会根据构建配置生成 Debug 和 Release 子目录。

在 obj 目录中,你可能会找到以下类型的文件:

  • csproj.FileListAbsolute.txt:列出了项目中所有文件的绝对路径。
  • *.csproj.GenerateResource.cache:资源生成器的缓存文件。
  • *.csproj.AssemblyReference.cache:程序集引用的缓存文件。
  • *.csproj.CopyComplete:复制操作完成的标记文件。
  • *.csproj.CoreCompileInputs.cache:编译输入的缓存文件。

obj 目录中的文件通常在构建过程中被自动清理和重新生成。这个目录对于开发者来说通常是不可见的,因为它主要用于构建系统内部处理。

总结

  • bin 目录:
    • 存放最终编译输出,包括可执行文件和库文件。
    • 包含 Debug 和 Release 子目录,分别用于调试和发布版本。
  • obj 目录:
    • 存放编译过程中的中间文件和缓存文件。

这两个目录由系统自动管理,开发者通常无需手动干预。发布应用时,只需关注 bin 目录中的 Release 子目录,确保其中的文件是最终用户使用的版本。

App.config

用于存储应用程序的设置和连接字符串等信息。允许开发者在不修改代码的情况下更改应用程序行为,例如:

  • 更改数据库连接字符串。
  • 设置日志级别。
  • 定义应用程序特定行为。

App.config文件结构

<?xml version="1.0" encoding="utf-8" ?>
<configuration><startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup><connectionStrings><!-- 数据库连接字符串 --></connectionStrings><appSettings><!-- 应用程序设置 --></appSettings><!-- 其他配置节 -->
</configuration>
  • :根元素,包含所有配置节。
  • :指定应用程序支持的 .NET 运行时版本。
  • :用于存储数据库连接字符串和其他连接信息。
  • :用于存储应用程序的自定义设置,如路径、默认值等。

使用 App.config文件

使用 ConfigurationManager 类来读取和写入 App.config 文件中的设置。以下是一些常见的操作示例:

读取连接字符串

string connectionString = ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString;

读取应用程序设置

string mySetting = ConfigurationManager.AppSettings["MySetting"];

写入应用程序设置(仅限 .NET Framework)

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["MySetting"].Value = "New Value";
config.Save();
ConfigurationManager.RefreshSection("appSettings");

注意事项

  • .NET Core 和 .NET 5+:
    • 使用 appsettings.json 和 appsettings.{Environment}.json 文件存储配置信息,替代 App.config。
  • .NET Framework:
    • App.config 编译时重命名为 <程序集名称>.config,如 MyApp.exe.config。
    • 代码中使用 ConfigurationManager 需添加 System.Configuration 程序集引用。

App.config 是管理应用程序配置的重要工具,使配置信息与代码分离,便于维护和修改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/795022.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

作业9.2:论文查重

这个作业属于哪个课程 班级链接这个作业要求在哪里 作业要求链接这个作业的目标 设计论文查重算法;学会 Git 版本控制。Github 链接:博客正文首行 github 链接 目录一、整体设计开发环境整体设计项目结构二、模块接口的设计与实现核心的类与方法类与函数的调用关系核心算法三…

搭建企业内部的大语言模型系统

大纲开源大语言模型 大语言模型管理 私有大语言模型服务部署方案开源大语言模型 担心安全与隐私?可私有部署的开源大模型商业大模型,不支持私有部署ChatGPT Claude Google Gemini 百度问心一言开源大模型,支持私有部署Mistral Meta Llama ChatGLM 阿里通义千问常用开源大模型…

115. 不同的子序列(leetcode)

https://leetcode.cn/problems/distinct-subsequences/submissions/563375885/ 这题比较有难度,具体不太好想到,需要以是否选择s[i]来划分子集这位描述的很清楚,不做过多赘述 class Solution {public int numDistinct(String s, String t) {// f[i][j]表示s中前i个字符中选择,有…

0.1+0.2 != 0.3 (Java为例)

1. 小数的二进制表示 以10.625为例。整数部分进行除2取余的操作,10的二进制为1010。小数部分进行乘2取整操作,直到小数部分为0或达到需要的精度:0.625*2=1.25 取整数1,小数部分0.25继续计算 0.25*2=0.5 取整数0,小数部分0.5继续计算 0.5*2=1.0 取整数1,小数部分为0,停止…

信创领域认证,来自工信部人才交流中心的PostgreSQL培训班

在国家大力发展信创软件和数据库行业的背景下,PostgreSQL 具有多方面的优势和机遇,具体体现在以下几个方面: 1. 技术优势契合信创需求: PostgreSQL 数据库是一个功能强大、性能稳定、可扩展性强的开源对象关系数据库系统,支持多种数据类型(如数组、JSON、XML 等),方便存储…

Salesforce职业规划:原厂,甲方,乙方,从业者应该如何选择?

Salesforce生态系统蓬勃发展,对不同角色的需求量不断增加。需求方包括使用Salesforce的最终用户(甲方)、实施Salesforce的咨询公司、为Salesforce创建应用程序的AppExchange公司(或ISV),当然还有Salesforce原厂。 Salesforce最终用户(甲方) 2020年,Salesforce的客户数…

3SRB5016-ASEMI三相整流桥3SRB5016

3SRB5016-ASEMI三相整流桥3SRB5016编辑:ll 3SRB5016-ASEMI三相整流桥3SRB5016 型号:3SRB5016 品牌:ASEMI 封装:3SRB-5 批号:2024+ 现货:50000+ 最大重复峰值反向电压:1600V 最大正向平均整流电流(Vdss):50A 功率(Pd):大功率 芯片个数:5 引脚数量:5 安装方式:直插 类…

34-样式迁移

类似于加了一层滤镜基于CNN的样式迁移:如下对于合成图片X,我们希望它的内容和输入的内容图片,放入同一个CNN,在某一个卷积层上,输出的与内容有关的特征能够匹配 同时,,对于样式图片,我们希望合成图片X,和样式图片放入同一个CNN,在某一个卷积层上,输出的与样式有关的…

STM32-ADC外设

1.通道 .规则通道 .注入通道 2.规则序列寄存器 配置通道的采样顺序 3.ADC周期4.ADC转换方式 *单次转换:adc每次只采集某个通道的一个点,如果需要再次采集,就需要重新使能。 *连续转换:adc采集某个通道一个点,转换完成后,再采集第二点。依次类推 4.扫描模式 *单次扫描模式…

SignalR跨域问题解决

本文来自博客园,作者:WantRemake,转载请注明原文链接:https://www.cnblogs.com/SmallChen/p/18406437

字符串类

常用类String基础知识String类的特性String类是一个final类,不能被继承 String类底层是一个final修饰的字符数组,表示不可变的字符序列(final char value[ ]) String的不可变性:当String值改变时,会在常量池中创建新的字符串字符串-创建字面量方式创建 String s1="a…

AI答案之书解来为你解决难题

本文由 ChatMoney团队出品介绍说明 “答案之书智能体”是您贴心的智慧伙伴,随时准备为您解答生活中的种种困惑。无论您在工作中遭遇瓶颈,还是在情感世界里迷失方向,亦或是对个人成长感到迷茫,它都能倾听您的心声,并给予准确且富有启发的回应。 它并非简单地给出答案,而是…