2.2 LWIP用户自定义配置文件解析

LWIP协议支持用户配置,可以通过用户裁剪实现最优化配置,所有这些都是在lwipopts.h文件中实现的,在下面我就会解读该文件,可以让后来者知道该如何修改变量。

#ifndef LWIPOPTS_H
#define LWIPOPTS_H

//*****************************************************************************
//
// ---------- SNMP options ----------
//
//*****************************************************************************
#define LWIP_SNMP                       0        //SNMP协议启用
#if LWIP_SNMP
#define SNMP_CONCURRENT_REQUESTS     1            //SNMP当前允许请求数量
#define SNMP_TRAP_DESTINATIONS       1            //SNMP trap目的地址数目
#define SNMP_PRIVATE_MIB             1          //SNMP 私有节点设置允许
#define SNMP_SAFE_REQUESTS           1            //仅回复SNMP安全请求
#endif

//*****************************************************************************
//
// ---------- Platform specific locking ----------
//
//*****************************************************************************
#define SYS_LIGHTWEIGHT_PROT              1          //临界中断保护开关(多任务模式下开启)
#define NO_SYS                            0          //使用自定义LWIP配置 为1则只使用超轻量级LWIP配置

//*****************************************************************************
//
// ---------- Memory options ----------
//
//*****************************************************************************
#define MEM_LIBC_MALLOC                 0                //采用LWIP自带函数分配动态内存
#define MEM_LIBC_MALLOC                 0                //内存池不通过内存堆来分配
#define MEM_ALIGNMENT                   4                //字节对齐(和CPU的位数有关,32位设置为4)
#define MEM_SIZE                        8*1024       //堆内存大小,用于发送数据
#define MEMP_SANITY_CHECK               0                //mem_free调用后检查链表是否有循环 by zc
#define MEMP_OVERFLOW_CHECK             0                //lwip堆内存溢出检查
#define MEM_USE_POOLS                   0                //内存堆不通过内存池分配
#define MEM_USE_POOLS_TRY_BIGGER_POOL   0               //申请内存失败不选择大内存池
#define MEMP_USE_CUSTOM_POOLS           0                //同上

//*****************************************************************************
//
// ---------- Internal Memory Pool Sizes ----------
//
//*****************************************************************************
#define MEMP_NUM_PBUF                       60      //来自memp的PBUF_ROM(ROM内存池)和PBUF_REF(RAM内存池)数目最大总和
#define MEMP_NUM_RAW_PCB                    4       //RAW连接的PCB数目(需要LWIP RAW有效)
#define MEMP_NUM_UDP_PCB                    4        //能够同时连接的UDP的PCB数目
#define MEMP_NUM_TCP_PCB                    (TCP_WND + TCP_SND_BUF)/TCP_MSS  //能够同时连接的TCP的PCB数目 12
#define MEMP_NUM_TCP_PCB_LISTEN              1       //(TCP_WND + TCP_SND_BUF)/TCP_MSS  //能够同时监听的TCP的PCB数目
#define MEMP_NUM_TCP_SEG                    40     //80 能够同时在队列里的TCP的PCB数目
#define MEMP_NUM_REASSDATA                   8       //最大同时等待重装的IP包数目,是整个IP包,不是IP分片
#define MEMP_NUM_ARP_QUEUE                  30       //最大等待回复ARP请求的数目(ARP_QUEUEING有效)
#define MEMP_NUM_IGMP_GROUP                  8       //多播组同时接收数据的最大成员数目(LWIP_IGMP有效)
#define MEMP_NUM_SYS_TIMEOUT                20       //能够同时激活的超时连接数目(NO_SYS==0有戏)
#define MEMP_NUM_NETBUF                     10       //netbufs结构的数目
#define MEMP_NUM_NETCONN                    16       //netconns结构的数目
#define MEMP_NUM_TCPIP_MSG_API              40       //tcpip_msg结构的最大数目,用于callback和API的通讯 by zc
#define MEMP_NUM_TCPIP_MSG_INPKT            40       //tcpip_msg接受数据包结构的最大数目 by zc
#define PBUF_POOL_SIZE                      48       //内存池数量(小内存减小该选项可大大减小内存占用)

//*****************************************************************************
//
// ---------- ARP options ----------
//
//*****************************************************************************
#define LWIP_ARP                            1        //ARP协议允许
#define ARP_TABLE_SIZE                      10     //ARP维护的表项大小
#define ARP_QUEUEING                        1      //硬件地址解析时,将发送数据包计入队列
#define ETHARP_TRUST_IP_MAC                 1      //所有IP数据包都会直接引起ARP table的更新,
                                                     //为0则非表项内IP-MAC关系会引起ARP请求,可以避免IP欺骗,不过会造成延时
#define ETHARP_SUPPORT_VLAN                 0      //非虚拟局域网,为1则仅虚拟局域网通讯有效

//*****************************************************************************
//
// ---------- IP options ----------
//
//*****************************************************************************
#define IP_FORWARD                          0    //不允许不匹配数据包转发,多接口时为1
#define IP_OPTIONS_ALLOWED                  1    //带IP选项数据包允许 为0则丢弃所有IP数据包
#define IP_REASSEMBLY                       1    //允许接收IP包分片包(为0不允许,不能够接收大于MTU的包)
#define IP_FRAG                             1    //允许发送IP包分片包
#define IP_REASS_MAXAGE                     3    //允许接收的最大分段数
#define IP_REASS_MAX_PBUFS                  10   //最大允许存在的IP分片包占用的内存池个数
#define IP_FRAG_USES_STATIC_BUF             1    //IP分片使用静态缓冲区
#define IP_FRAG_MAX_MTU                     1500 //IP分片最大缓冲数量
#define IP_DEFAULT_TTL                      255  //IP数据包最大经历设备数目
#define IP_SOF_BROADCAST                    0    //IP发送广播包过滤
#define IP_SOF_BROADCAST_RECV               0    //IP接收广播包过滤

//*****************************************************************************
//
// ---------- ICMP options ----------
//
//*****************************************************************************
#define LWIP_ICMP                           1    //开启ping包接收/发送
#define ICMP_TTL                            (IP_DEFAULT_TTL) //ping包最大经历设备数目
#define LWIP_BROADCAST_PING                 0    //不回复广播ping包
#define LWIP_MULTICAST_PING                 0    //不回复多播ping包

//*****************************************************************************
//
// ---------- RAW options ----------
//
//*****************************************************************************
#define LWIP_RAW                            0              //无操作系统基于回调函数驱动
#define RAW_TTL                           (IP_DEFAULT_TTL) //应用层数据传输次数(基于IP层的TTL)

//*****************************************************************************
//
// ---------- DHCP options ----------
//
//*****************************************************************************
#define LWIP_DHCP                           0    //动态主机协议配置(为1时)
#define LWIP_AUTOIP                         0    //动态主机IP地址配置(为1时)
#define LWIP_DHCP_AUTOIP_COOP               0    //允许上述两种配置同时存在于1个接口(为1时)
#define LWIP_DHCP_AUTOIP_COOP_TRIES         9    //DHCP分配允许失败次数,失败则使用AUTOUP

//*****************************************************************************
//
// ---------- IGMP options ----------
//
//*****************************************************************************
#define LWIP_IGMP                           0            //LWIP组管理协议

//*****************************************************************************
//
// ---------- DNS options -----------
//
//*****************************************************************************
#define LWIP_DNS                            0     //域名服务器模块(依托UDP协议)
#define DNS_TABLE_SIZE                      4     //域名服务器维护的最大入口数目
#define DNS_MAX_NAME_LENGTH                 256   //域名服务器主机地址最大长度
#define DNS_MAX_SERVERS                     2     //域名服务器最大服务数目
#define DNS_DOES_NAME_CHECK                 1     //查询域名服务器时检测地址名
#define DNS_USES_STATIC_BUF                 1     //域名服务器使用静态地址
#define DNS_MSG_SIZE                        512   //域名服务器接收最大通讯数据长度
#define DNS_LOCAL_HOSTLIST                  0     //在本地维护域名服务器主机-地址表(为1时)
#define DNS_LOCAL_HOSTLIST_IS_DYNAMIC       0     //主机-地址表实时更新(为1时)

//*****************************************************************************
//
// ---------- UDP options ----------
//
//*****************************************************************************
#define LWIP_UDP                               1            //启用UDP协议(snmp协议基于此)
#define LWIP_UDPLITE                           1            //UDP协议启用精简版
#define UDP_TTL                                (IP_DEFAULT_TTL) //UDP数据包传输次数
#define LWIP_NETBUF_RECVINFO                   0            //接收到的数据包除首个外其它不附加目的地址和端口

//*****************************************************************************
//
// ---------- TCP options ----------
//
//*****************************************************************************
#define LWIP_TCP                            1                                  //启用TCP协议(http协议基于此)
#define TCP_TTL                             (IP_DEFAULT_TTL)                   //TCP数据包传输次数
#define TCP_WND                             4*TCP_MSS                          //tcp窗口大小
#define TCP_MAXRTX                          12                                 //最大允许重传TCP数据包数目
#define TCP_SYNMAXRTX                       6                                  //最大允许重传SYN连接包数目
#define TCP_QUEUE_OOSEQ                     (LWIP_TCP)                         //TCP接收队列外数据块排序
#define TCP_MSS                             1460                               //tcp报文最大分段长度
#define TCP_CALCULATE_EFF_SEND_MSS          1                                  //tcp预计发送的分段长度,为1则根据窗口大小分配
#define TCP_SND_BUF                         (8*TCP_MSS)                        //TCP发送缓冲区  zc 7.1
#define TCP_SND_QUEUELEN                    (4*(TCP_SND_BUF/TCP_MSS))          //TCP发送队列长度
#define TCP_SNDLOWAT                        (TCP_SND_BUF/4)                    //TCP可发送数据长度
#define TCP_LISTEN_BACKLOG                  1                                  //TCP多连接允许
#define TCP_DEFAULT_LISTEN_BACKLOG          0xff                               //TCP连接和半连接的总数
#define LWIP_TCP_TIMESTAMPS                 0                                  //TCP时间戳选项
#define TCP_WND_UPDATE_THRESHOLD            (TCP_WND / 4)                      //TCP窗口更新阈值

//TCP定时器设置选项
#define  TCP_MSL                             10000UL                            //TCP连接存在时间 单位ms
#define  TCP_FIN_WAIT_TIMEOUT                20000UL                            //FIN等到ACK应答时间 单位ms
#define  TCP_TMR_INTERVAL                    20                                 //TCP定时器计数间隔 20ms

//*****************************************************************************
//
// ---------- Internal Memory Pool Sizes ----------
//
//*****************************************************************************
 #define  PBUF_LINK_HLEN                 14           //为处理以太网头申请的包长度(本地MAC地址+远端MAC地址+协议类型) 6+6+2                          #define  PBUF_POOL_BUFSIZE             256           //单个内存池长度,要考虑到4字节对齐和最佳大小
 #define  ETH_PAD_SIZE                  0             //以太网填充长度,stm32设置为0 根据发送包判断

//关系不大.. 默认即可

//*****************************************************************************
//
// ---------- Sequential layer options ----------
//
//*****************************************************************************
#define LWIP_TCPIP_CORE_LOCKING           0           //?
#define LWIP_NETCONN                      1           //应用层使用NETCONN相关函数

//*****************************************************************************
//
// ---------- Socket Options ----------
//
//*****************************************************************************
#define LWIP_SOCKET                       0               //关闭SOCKET通讯
//#define LWIP_COMPAT_SOCKETS             1
//#define LWIP_POSIX_SOCKETS_IO_NAMES     1
#define LWIP_SO_RCVTIMEO                  0               //conn->acceptmbox/recvmbox接收有超时限制,超时后自动断开连接
//#define LWIP_SO_RCVBUF                  0
//#define SO_REUSE                        0

//*****************************************************************************
//
// ---------- Statistics options ----------
//
//*****************************************************************************
 #define LWIP_STATS                      0                      //LWIP统计选项

//*****************************************************************************
//
// ---------- checksum options ----------
//
//*****************************************************************************
#define CHECKSUM_GEN_IP                      1                   //IP校验和生成
#define CHECKSUM_GEN_UDP                     1                   //UDP校验和生成
#define CHECKSUM_GEN_TCP                     1                   //TCP校验和生成
#define CHECKSUM_CHECK_IP                    1                   //IP校验和校验
#define CHECKSUM_CHECK_UDP                   1                   //UDP校验和校验
#define CHECKSUM_CHECK_TCP                   1                   //TCP校验和校验

//*****************************************************************************
//
// ---------- TCP KEEPLIVE ----------
//
//*****************************************************************************
#define LWIP_TCP_KEEPALIVE                  1                //tcp保活定时器
#define TCP_KEEPIDLE_DEFAULT                60000            //保活时间 60s
#define TCP_KEEPINTVL_DEFAULT               10000            //保活探测 10s
#define TCP_KEEPCNT_DEFAULT                 9U  

//*****************************************************************************
//
// ---------- DEBUG_OPTIONS  ----------
//
//*****************************************************************************
#define DEBUG_OPTIONS                                   0                    //调试代码

#if DEBUG_OPTIONS
                                                        #define U8_F   "c"
                                                        #define S8_F   "c"
                                                        #define X8_F   "x"
                                                        #define U16_F  "u"
                                                        #define S16_F  "d"
                                                        #define X16_F  "x"
                                                        #define U32_F  "u"
                                                        #define S32_F  "d"
                                                        #define X32_F  "x"

                                                        #define LWIP_DEBUG     1//* 不能少这个,否则LWIP_DEBUGF一直编译不过滴!!!
                                                        //LWIP_DEBUGF调用
                                                        #define LWIP_PLATFORM_DIAG(para)    printf para
                                                        //LWIP_ERROR 、LWIP_ASSERT调用
                                                        #define LWIP_PLATFORM_ASSERT(para)  printf(para)
                                                        /**
                                                         * LWIP_DBG_MIN_LEVEL: After masking, the value of the debug is
                                                         * compared against this value. If it is smaller, then debugging
                                                         * messages are written.
                                                         */
                                                        #define LWIP_DBG_MIN_LEVEL              LWIP_DBG_LEVEL_ALL

                                                        /**
                                                         * LWIP_DBG_TYPES_ON: A mask that can be used to globally enable/disable
                                                         * debug messages of certain types.
                                                         */
                                                        #define LWIP_DBG_TYPES_ON               LWIP_DBG_OFF

                                                        /**
                                                         * ETHARP_DEBUG: Enable debugging in etharp.c.
                                                         */
                                                        #define ETHARP_DEBUG                    LWIP_DBG_OFF

                                                        /**
                                                         * NETIF_DEBUG: Enable debugging in netif.c.
                                                         */
                                                        #define NETIF_DEBUG                     LWIP_DBG_OFF

                                                        /**
                                                         * PBUF_DEBUG: Enable debugging in pbuf.c.
                                                         */
                                                        #define PBUF_DEBUG                      LWIP_DBG_OFF

                                                        /**
                                                         * API_LIB_DEBUG: Enable debugging in api_lib.c.
                                                         */
                                                        #define API_LIB_DEBUG                   LWIP_DBG_OFF

                                                        /**
                                                         * API_MSG_DEBUG: Enable debugging in api_msg.c.
                                                         */
                                                        #define API_MSG_DEBUG                   LWIP_DBG_OFF

                                                        /**
                                                         * SOCKETS_DEBUG: Enable debugging in sockets.c.
                                                         */
                                                        #define SOCKETS_DEBUG                   LWIP_DBG_OFF

                                                        /**
                                                         * ICMP_DEBUG: Enable debugging in icmp.c.
                                                         */
                                                        #define ICMP_DEBUG                      LWIP_DBG_OFF

                                                        /**
                                                         * IGMP_DEBUG: Enable debugging in igmp.c.
                                                         */
                                                        #define IGMP_DEBUG                      LWIP_DBG_OFF

                                                        /**
                                                         * INET_DEBUG: Enable debugging in inet.c.
                                                         */
                                                        #define INET_DEBUG                      LWIP_DBG_OFF

                                                        /**
                                                         * IP_DEBUG: Enable debugging for IP.
                                                         */
                                                        #define IP_DEBUG                        LWIP_DBG_OFF

                                                        /**
                                                         * IP_REASS_DEBUG: Enable debugging in ip_frag.c for both frag & reass.
                                                         */
                                                        #define IP_REASS_DEBUG                  LWIP_DBG_OFF

                                                        /**
                                                         * RAW_DEBUG: Enable debugging in raw.c.
                                                         */
                                                        #define RAW_DEBUG                       LWIP_DBG_OFF

                                                        /**
                                                         * MEM_DEBUG: Enable debugging in mem.c.
                                                         */
                                                        #define MEM_DEBUG                       LWIP_DBG_OFF

                                                        /**
                                                         * MEMP_DEBUG: Enable debugging in memp.c.
                                                         */
                                                         #define MEMP_DEBUG                     LWIP_DBG_OFF

                                                        /**
                                                         * SYS_DEBUG: Enable debugging in sys.c.
                                                         */
                                                        #define SYS_DEBUG                       LWIP_DBG_OFF

                                                        /**
                                                         * TCP_DEBUG: Enable debugging for TCP.
                                                         */
                                                        #define TCP_DEBUG                       LWIP_DBG_OFF

                                                        /**
                                                         * TCP_INPUT_DEBUG: Enable debugging in tcp_in.c for incoming debug.
                                                         */
                                                        #define TCP_INPUT_DEBUG                 LWIP_DBG_OFF

                                                        /**
                                                         * TCP_FR_DEBUG: Enable debugging in tcp_in.c for fast retransmit.
                                                         */
                                                        #define TCP_FR_DEBUG                    LWIP_DBG_OFF       //快速重传

                                                        /**
                                                         * TCP_RTO_DEBUG: Enable debugging in TCP for retransmit
                                                         * timeout.
                                                         */
                                                        #define TCP_RTO_DEBUG                   LWIP_DBG_OFF

                                                        /**
                                                         * TCP_CWND_DEBUG: Enable debugging for TCP congestion window.
                                                         */
                                                        #define TCP_CWND_DEBUG                  LWIP_DBG_OFF

                                                        /**
                                                         * TCP_WND_DEBUG: Enable debugging in tcp_in.c for window updating.
                                                         */
                                                        #define TCP_WND_DEBUG                   LWIP_DBG_OFF

                                                        /**
                                                         * TCP_OUTPUT_DEBUG: Enable debugging in tcp_out.c output functions.
                                                         */
                                                        #define TCP_OUTPUT_DEBUG                LWIP_DBG_OFF 

                                                        /**
                                                         * TCP_RST_DEBUG: Enable debugging for TCP with the RST message.
                                                         */
                                                        #define TCP_RST_DEBUG                   LWIP_DBG_ON

                                                        /**
                                                         * TCP_QLEN_DEBUG: Enable debugging for TCP queue lengths.
                                                         */
                                                        #define TCP_QLEN_DEBUG                  LWIP_DBG_OFF   //tcp_enqueue函数中用到

                                                        /**
                                                         * UDP_DEBUG: Enable debugging in UDP.
                                                         */
                                                        #define UDP_DEBUG                       LWIP_DBG_OFF

                                                        /**
                                                         * TCPIP_DEBUG: Enable debugging in tcpip.c.
                                                         */
                                                        #define TCPIP_DEBUG                     LWIP_DBG_OFF

                                                        /**
                                                         * PPP_DEBUG: Enable debugging for PPP.
                                                         */
                                                        #define PPP_DEBUG                       LWIP_DBG_OFF

                                                        /**
                                                         * SLIP_DEBUG: Enable debugging in slipif.c.
                                                         */
                                                        #define SLIP_DEBUG                      LWIP_DBG_OFF

                                                        /**
                                                         * DHCP_DEBUG: Enable debugging in dhcp.c.
                                                         */
                                                        #define DHCP_DEBUG                      LWIP_DBG_OFF

                                                        /**
                                                         * AUTOIP_DEBUG: Enable debugging in autoip.c.
                                                         */
                                                        #define AUTOIP_DEBUG                    LWIP_DBG_OFF

                                                        /**
                                                         * SNMP_MSG_DEBUG: Enable debugging for SNMP messages.
                                                         */
                                                        #define SNMP_MSG_DEBUG                  LWIP_DBG_OFF
                                                        /**
                                                         * SNMP_MIB_DEBUG: Enable debugging for SNMP MIBs.
                                                         */

                                                        #define SNMP_MIB_DEBUG                  LWIP_DBG_OFF
                                                        /**
                                                         * DNS_DEBUG: Enable debugging for DNS.
                                                         */
                                                        #define DNS_DEBUG                       LWIP_DBG_OFF

#else
       #define LWIP_NOASSERT   1
       #define LWIP_NOERROR    1
#endif  //DEBUG_OPTIONS END

#endif
时间: 2024-08-05 15:03:55

2.2 LWIP用户自定义配置文件解析的相关文章

Spring Boot干货系列:(二)配置文件解析

Spring Boot:配置文件解析   前言 上一篇介绍了Spring Boot的入门,知道了Spring Boot使用"习惯优于配置"(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来.所以,我们要想把Spring Boot玩的溜,就要懂得如何开启各个功能模块的默认配置,这就需要了解Spring Boot的配置文件application.properties. 正文 Spring Boot使用了一个全局的配置文件applicat

linuxPAM认证配置文件解析

1.PAM文件 /etc/pam.conf或者/etc/pam.d/ PAM配置文件/lib(64)/security/pam_*.so 可动态加载的PAM service module 2.配置文件格式 /etc/pam.conf:主配置文件 service    type    control    module-path    module-arguments /etc/pam.d/service:服务配置文件 type    control    module-path    modul

MySQL 5.6.24 线上版本配置文件解析

线上MySQL服务器配置文件解析 innodb_buffer_pool_size 非常重要的一个参数,用于配置InnoDB的缓冲池,如果数据库中只有哦Innodb表,则推荐配置量为总内存的75% select  engine,round(sum(data_length + index_length)/1024/1024,1) as 'Total MB' from information_schema.tables  where table_schema not in ('information_

SSH学习之二 OpenSSH配置文件解析

下面是对SSH配置文件的一些选项的分解说明,ssh_config是OpenSSH客户端的配置文件,sshd_config是OpenSSH服务器端的配置文件. ssh_config的内容如下: # This is the ssh client system-wide configuration file.  See ssh_config(5) for more information.  This file provides defaults for users, and the values c

redis概述,特点,与Memached的不同,生产环境主从配置,redis配置文件解析

Redis概述: 是一个基于Key-Value的持久化数据库存储,支持丰富的数据类型,用C语言编写,可基于内存又可持久化的日志型.Key-Value数据库,并提供多种语言的API Redis特点 1.Key-Value健值类型存储 2.支持数据可靠存储及落地 3.单进程单线程高性能服务器 4.单机qps(每秒查询率)可以达到10w 5.适合小数据量高速读写访问 Redis跟Memached的不同 1.Redis可以持久化数据存储 2.性能高很,Redis能支持超过10W每秒的读写频率 3.丰富的

SSH问题:系统启动时,spring配置文件解析失败,报”cvc-elt.1: 找不到元素 'beans' 的声明“异常

现象:spring加载配置文件applicationContext.xml出错,抛出nested exception is og.xml.sax.SAXParseException; lineNumber: 12; columnNumber: 47; cvc-elt.1: 找不到元素 'beans' 的声明r的异常信息. 造成该异常原因有两种: 第一,配置文件头部配置的xsd版本信息不正确,造成解析时出错.spring头部xsd或dtd校验文件的查找分两步,第一先从本地jar包中找,如果找到则用

mybatis配置文件解析原理简略时序图

配置文件解析主要用到XMLConfigBuilder(解析mybatis-config.xml) -->  XMLMapperBuilder(解析mapper.xml) --> XMLStatementBuilder(解析mapper.xml中cache, resultMap等配置信息) -->XMLScriptBuilder(解析mapper.xml中insert update select delete等sql语句节点) 1. 每个SQL语句节点都会生成一个SqlSource,每个S

系统启动时,spring配置文件解析失败,报”cvc-elt.1: 找不到元素 'beans' 的声明“异常

现象:spring加载配置文件applicationContext.xml出错,抛出nested exception is og.xml.sax.SAXParseException; lineNumber: 12; columnNumber: 47; cvc-elt.1: 找不到元素 'beans' 的声明r的异常信息. 造成该异常原因有两种: 第一,配置文件头部配置的xsd版本信息不正确,造成解析时出错.spring头部xsd或dtd校验文件的查找分两步,第一先从本地jar包中找,如果找到则用

WCF中配置文件解析

WCF中配置文件解析 2014-06-14 参考 WCF中配置文件解析 返回 在WCF Service Configuration Editor的使用中,我们通过配置工具自动生成了WCF服务端的config文件.现在我们来看下这个配置文件各个标签的意义: 1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 <!-- 这个程序集我们在项目中有引用的 --> 4