C#,入门教程(07)——软件项目的源文件与目录结构

上一篇:

C#,入门教程(06)——解决方案资源管理器,代码文件与文件夹的管理工具https://blog.csdn.net/beijinghorn/article/details/124895033

创建新的 C# 项目后, Visual Studio 会自动创建一系列的目录与文件。
程序员后面的工作就是在这个目录及这些文件的基础上进行的。
本文对这些目录与文件做一个概要性的解释。

一、目录

1、默认的目录

Visual Studio 默认创建 3 个子目录及下层的目录。

\bin
\---Debug
\---Release
\obj
\---Debug
\---Release
\Properties

\bin 目录保存项目生成的程序集(.exe 或 .dll)
\bin\Debug 保存“调式版本Debug”模式的文件,一般都是在这个目录下能找到可执行文件 .exe
\bin\Release  保存“正式发布版本Release”模式的文件

\obj 目录保存项目的编译临时文件(一般无需操心)
\obj\Debug 保存“调式版本Debug”模式的文件
\obj\Release 保存“正式发布版本Release”模式的文件

\Properties 目录保存项目相关的一些设置信息,一般无需阅读与修改。


2、改良与更好的目录结构

建议在工程目录下创建 App_Code 子目录,用以保存工程相关的所有 namespace 的 class 文件。
并且按类别予以区分。比如,幸运之门50018.COM的目录结构:

\App_Code
\App_Code\Basic  存储常用的 Helper 类的基础静态类
\App_Code\K50018 存储核心数据分类代码
\App_Code\K50018\Basic 数据分析的基础代码
\App_Code\K50018\Entity 数据体(从数据库、文件获得)的相关代码
\App_Code\K50018\Algorithm 数据分析的算法代码
\App_Code\K50018\Graph 生成走势图表等分析结果的代码
。。。

请,举一反三!

二、文件

工程相关的文件分类两类:(1)*.cs 是C#源代码类;(2)*.else 其他类;

1、.sln 解决方案(solution)文件

.sln 是解决方案的配置文件,保存着项目project和解决方案的关系。
这个文件也是双击打开 Visual Studio 的默认文档。

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.1.32228.430
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Desktop", "Desktop.csproj", "{D87DE9F7-951F-4392-A24B-64DF168191CA}"
EndProject
。。。

2、.csproj 工程项目(C sharp project)文件

.csproj 为c sharp project的缩写。
.csproj 项目文件,保存着源代码、其他文档、资源和本项目的归属关系。
用编辑器(推荐韩国人写的Editplus!)打开 Desktop.csproj 文件,可以看到类似这样的(XML)内容:

。。。

<ItemGroup><Compile Include="App_Code\K50018\Basic\Statistics.cs" /><Compile Include="App_Code\K50018\Algorithm\Prime.cs" /><Compile Include="App_Code\K50018\Graph\Trend.cs" />
。。。<Compile Include="Form1.cs"><SubType>Form</SubType></Compile><Compile Include="Form1.Designer.cs"><DependentUpon>Form1.cs</DependentUpon></Compile><Compile Include="Program.cs" />


。。。

3、App.config 项目配置文件

App.config 一般是这样的XML内容。

<?xml version="1.0" encoding="utf-8" ?>
<configuration><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup>
</configuration>

4、Form 相关文件

(1)Form 相关

Form 是指软件的窗口。Form 相关文件是3个一组。

Form1.cs (窗口事件处理的)源代码
Form1.Designer.cs 窗口设计的源代码(初学者略过)
Form1.resx 窗口设计的资源信息(初学者掠过)

Form1.cs 一般是这样的内容:

// 引用系统的命名空间

using System;
using System.IO;
using System.Text;
using System.Data;
using System.Linq;
using System.Drawing;
using System.Threading;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Windows.Forms;// 引用自己开发的命名空间
using Legalsoft.K50018;namespace Desktop_Application
{public partial class Form1 : Form{// 默认构造函数public Form1(){InitializeComponent();}// 窗口加载时候的处理private void Form1_Load(object sender, EventArgs e){}// button1 点击事件的处理private void button1_Click(object sender, EventArgs e){//一般的代码都从这里起飞!}}
}

Form1.Designer.cs的内容一般这样:

namespace Desktop_Application
{partial class Form1{/// <summary>/// 必需的设计器变量。/// </summary>private System.ComponentModel.IContainer components = null;/// <summary>/// 清理所有正在使用的资源。/// </summary>/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>protected override void Dispose(bool disposing){if (disposing && (components != null)){components.Dispose();}base.Dispose(disposing);}#region Windows 窗体设计器生成的代码/// <summary>/// 设计器支持所需的方法 - 不要修改/// 使用代码编辑器修改此方法的内容。/// </summary>private void InitializeComponent(){this.panel1 = new System.Windows.Forms.Panel();this.button1 = new System.Windows.Forms.Button();this.panel2 = new System.Windows.Forms.Panel();this.webBrowser1 = new System.Windows.Forms.WebBrowser();this.panel1.SuspendLayout();this.panel2.SuspendLayout();this.SuspendLayout();。。。}}
}

Form1.resx 窗口设计的资源信息(初学者掠过)

<?xml version="1.0" encoding="utf-8"?>
<root><!-- Microsoft ResX Schema Version 2.0The primary goals of this format is to allow a simple XML format that is mostly human readable. The generation and parsing of the various data types are done through the TypeConverter classes associated with the data types.。。。-->
</root>


(2)更多的窗口

如果软件设计有多个窗口,则就具有多个配套的文件。常见的有:

欢迎窗口
Welcome.cs (窗口事件处理的)源代码
Welcome.Designer.cs 窗口设计的源代码(初学者略过)
Welcome.resx 窗口设计的资源信息(初学者掠过)

软件配置窗口
Setting.cs (窗口事件处理的)源代码
Setting.Designer.cs 窗口设计的源代码(初学者略过)
Setting.resx 窗口设计的资源信息(初学者掠过)

软件帮助窗口
Help.cs (窗口事件处理的)源代码
Help.Designer.cs 窗口设计的源代码(初学者略过)
Help.resx 窗口设计的资源信息(初学者掠过)

再见!
Bye.cs (窗口事件处理的)源代码
Bye.Designer.cs 窗口设计的源代码(初学者略过)
Bye.resx 窗口设计的资源信息(初学者掠过)


三、更多的项目!!!

压轴的,都是精彩的!

《幸运之门彩票网50018.COM》 有这样一系列的实际需求:
(1)网站:运行于 Windows Server 2008 之 IIS 的 Web 服务;
     需要 App_Code 下的所有代码支持的功能;
(2)合作:运行于合作伙伴 Linux 之 Web 服务;
     需要 App_Code 下的所有代码支持的功能;
(3)桌面PC:《蓝彩和app》;
     需要 App_Code 下的所有代码支持的功能;
(4)安卓(Andriod)App:《蓝彩和app》;
     需要 App_Code 下的所有代码支持的功能;
(5)苹果(iOS)App:《蓝彩和app》;
     需要 App_Code 下的所有代码支持的功能;
(6)合作伙伴Unity游戏软件内的《CaiPiao分析》;
     需要 App_Code 下的主要代码支持的功能;

于是,在我的工程目录下就有了这样一些文件:

App.config
Desktop.csproj 桌面PC软件
Desktop.sln
Web.csproj IIS网站,WEB服务
Web.sln
Linux.csproj LINUX,WEB服务
Linux.sln
MAPP-Andriod.csproj 安卓app
MAPP-Andriod.sln
MAPP-iOS.csproj 苹果app
MAPP-iOS.sln
Unity.csproj 游戏Unity app
Unity.sln
Form1.cs
Form1.Designer.cs
Form1.resx
Welcome.cs
Welcome.Designer.cs
Welcome.resx
Setting.cs
Setting.Designer.cs
Setting.resx
Help.cs
Help.Designer.cs
Help.resx
Bye.cs
Bye.Designer.cs
Bye.resx

重要的是!仅仅只需要维护一个 App_Code !!!

C# 是无与伦比的!

下一篇:

C#,入门教程(08)——基本数据类型及使用的基础知识https://blog.csdn.net/beijinghorn/article/details/123906998


 

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

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

相关文章

Cpp::静态 动态的类型转换全解析(36)

文章目录 前言一、C语言中的类型转换二、为什么C会有四种类型转换&#xff1f;内置类型 -> 自定义类型自定义类型 -> 内置类型自定义类型 -> 自定义类型隐式类型转换的坑 三、C强制类型转换static_castreinterpret_castconst_castdynamic_cast 四、RTTI总结 前言 Hell…

Android中Service在新进程中的启动流程

目录 1、Service与AMS交互框架介绍 1.1、认识AMS代表IActivityManager 1.2、认识客户端代表IApplicationThread 2、Service启动流程概览 我们知道Android有四大组件&#xff0c;Activity、Service、ContentProvider、Broadcast&#xff0c;每个组件在系统运行中或者我们编写…

docker 简要笔记

文章目录 一、前提内容1、docker 环境准备2、docker-compose 环境准备3、流程说明 二、打包 docker 镜像1、基础镜像2、国内镜像源3、基础的dockerfile4、打包镜像 四、构建运行1、docker 部分2、docker-compose 部分2.1、构建docker-compose.yml2.1.1、同目录构建2.1.2、利用镜…

利用Redis实现数据缓存

目录 1 为啥要缓存捏&#xff1f; 2 基本流程&#xff08;以查询商铺信息为例&#xff09; 3 实现数据库与缓存双写一致 3.1 内存淘汰 3.2 超时剔除&#xff08;半自动&#xff09; 3.3 主动更新&#xff08;手动&#xff09; 3.3.1 双写方案 3.3.2 读写穿透方案 3.3.…

活动回顾和预告|微软开发者社区 Code Without Barriers 上海站首场活动成功举办!

Code Without Barriers 上海活动回顾 Code Without Barriers&#xff1a;AI & DATA 深入探索人工智能与数据如何变革行业 2025年1月16日&#xff0c;微软开发者社区 Code Without Barriers &#xff08;CWB&#xff09;携手 She Rewires 她原力在大中华区的首场活动“AI &…

python爬虫入门(一) - requests库与re库,一个简单的爬虫程序

目录 web请求与requests库 1. web请求 1.1 客户端渲染与服务端渲染 1.2 抓包 1.3 HTTP状态代码 2. requests库 2.1 requests模块的下载 2.2 发送请求头与请求参数 2.3 GET请求与POST请求 GET请求的例子&#xff1a; POST请求的例子&#xff1a; 3. 案例&#xff1a;…

全连接神经网络(前馈神经网络)

目录 一、初步认识全连接神经网络 1、神经元 2、网络结构 3、正向传播算法 二、反向传播算法 1、理解 2、迭代流程 三、构建神经网络模型的基本步骤 四、线性回归神经网络结构 4.1 数据处理 1、数据导入 2、数据归一化处理 3、数据集划分 4、数据形状变换 4.2 模…

【C++初阶】第11课—vector

文章目录 1. 认识vector2. vector的遍历3. vector的构造4. vector常用的接口5. vector的容量6. vector的元素访问7. vector的修改8. vector<vector\<int\>>的使用9. vector的使用10. 模拟实现vector11. 迭代器失效11.1 insert插入数据内部迭代器失效11.2 insert插入…

Linux查看服务器的内外网地址

目录&#xff1a; 1、内网地址2、外网地址3、ping时显示地址与真实不一致 1、内网地址 ifconfig2、外网地址 curl ifconfig.me3、ping时显示地址与真实不一致 原因是dns缓存导致的&#xff0c;ping这种方法也是不准确的&#xff0c;有弊端不建议使用&#xff0c;只适用于测试…

PAT甲级-1024 Palindromic Number

题目 题目大意 一个非回文数&#xff0c;加上它的翻转数所得的和&#xff0c;进行k次&#xff0c;有可能会得到一个回文数。给出一个数n&#xff0c;限制相加次数为k次&#xff0c;如果小于k次就得到回文数&#xff0c;那么输出该回文数和相加的次数&#xff1b;如果进行k次还…

xss靶场

xss-labs下载地址&#xff1a;GitHub - do0dl3/xss-labs: xss 跨站漏洞平台 xss常见触发标签&#xff1a;XSS跨站脚本攻击实例与防御策略-CSDN博客 level-1 首先查看网页的源代码发现get传参的name的值test插入了html里头&#xff0c;还回显了payload的长度。 <!DOCTYPE …

数据结构——实验七·排序

欢迎各位大佬们来到Tubishu的博客&#x1f31f; Tubishu是一名计算机本科生&#xff0c;不定期发送一些在学校的成果供佬们消遣~希望能为佬的编程之路添砖加瓦⭐&#x1f525; 求各位大佬们垂怜&#x1f525;点赞评论一下呗&#x1f525;&#x1f525; 本文专栏 ➡️ 数据结构 …

使用vscode + Roo Code (prev. Roo Cline)+DeepSeek-R1使用一句话需求做了个实验

摘要 使用vscode、Roo Code和deepseek-reasoner进行了一个实验&#xff0c;尝试使用一句话需求来生成小红书封面图片。工具根据需求提供了详细的架构方案&#xff0c;包括技术栈选择、核心模块划分、目录结构建议等。然后&#xff0c;工具自动化地完成了开发和测试&#xff0c;…

vscode环境中用仓颉语言开发时调出覆盖率的方法

在vscode中仓颉语言想得到在idea中利用junit和jacoco的覆盖率&#xff0c;需要如下几个步骤&#xff1a; 1.在vscode中搭建仓颉语言开发环境&#xff1b; 2.在源代码中右键运行[cangjie]coverage. 思路1&#xff1a;编写了测试代码的情况&#xff08;包管理工具&#xff09; …

基于SpringBoot+WebSocket的前后端连接,并接入文心一言大模型API

前言&#xff1a; 本片博客只讲述了操作的大致流程&#xff0c;具体实现步骤并不标准&#xff0c;请以参考为准。 本文前提&#xff1a;熟悉使用webSocket 如果大家还不了解什么是WebSocket&#xff0c;可以参考我的这篇博客&#xff1a; rWebSocket 详解&#xff1a;全双工…

積分方程與簡單的泛函分析8.具連續對稱核的非齊次第II類弗雷德霍姆積分算子方程

1)def求解具連續對稱核的非齊次第II類弗雷德霍姆積分算子方程 设 是定义在上的连续对称核函数&#xff0c; 非齐次第二类弗雷德霍姆积分算子方程的形式为&#xff1a; &#xff0c; 其中是未知函数&#xff0c;是给定的连续函数&#xff0c;是参数。 2)def其特徵值是否一致…

RV1126画面质量四:GOP改善画质

一&#xff0e; 什么是 GOP GOP 实际上就是两个 I 帧的间隔&#xff0c;比方说分辨率是 1920 * 1080 50 帧&#xff0c;假设 GOP 为 5&#xff0c;那就是大概 2s 插入一个 I 帧。我们再 回顾下&#xff0c;H264/H265 的帧结构。H264/H265 分别分为三种帧类型&#xff1a;I 帧、…

一文了解二叉树的基本概念

文章目录 二叉树1二叉树的定义及其主要特征1.1二叉树的定义1.2二叉树的特点1.3二叉树的五种形态1.4二叉树与度为2的有序树的区别1.5几个特殊的二叉树1.6二叉树的性质 2二叉树的存储结构2.1二叉树的顺序存储2.2二叉树的链式存储 二叉树 1二叉树的定义及其主要特征 1.1二叉树的定…

MAX98357A一款数字脉冲编码调制(PCM)输入D类音频功率放大器

MAX98357A是一款数字脉冲编码调制&#xff08;PCM&#xff09;输入D类音频功率放大器&#xff0c;以下是对其的详细介绍&#xff1a; 一、主要特性 音频性能&#xff1a; 提供D类效率与AB类音频性能。支持高达3.2W&#xff08;4Ω负载&#xff0c;5V供电&#xff09;的输出功率…

nacos(基于docker最详细安装)

1、什么是Spring Cloud Spring Cloud是一系列框架的集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发&#xff0c;如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等&#xff0c;都可以用Spring Boot的开发风格做到一键启动和部署。…