在 Net7.0环境下测试了 Assembly.Load、Assmebly.LoadFile和Assembly.LoadFrom的区别
一、简介
很长时间没有关注一些C#技术细节了,主要在研究微服务、容器、云原生、编批等高大上的主题了,最近在写一些框架的时候,遇到了一些和在 Net Framework 框架下不一样的情况,当然了,我今天主要测试的是,在通过【添加项目引用】和【手动拷贝DLL】的情况下,这三个方法加载程序集:Assembly.Load()、Assmebly.LoadFile() 和Assembly.LoadFrom() 的区别,别的可没测试,今天就把我的测试过程发布出来,如果对大家有帮助,我当然很高兴,如果是高手,也希望不吝赐教。
测试环境:
操作系统:Windows 10 Professional
开发工具:Visual Studio 2022
测试平台:Window Form
DotNet版本:Net 7.0
二、测试过程
最近,我在写一些底层框架,需要用到反射,项目要做到热拔插、热启动等类似的功能,有人说 Assembly.Load() 可以直接输入程序集的名称就可以加载拷贝到当前运行目录下的程序集,我一运行,就出现了错误,索性,我就都测试一下,所以就有了今天的测试。在编码的过程中出现了一些和预期不一样的地方,我就把测试的代码发布出来,也希望大家提出宝贵的意见。
直接上代码,然后再总结,今天主要测试 Assembly.Load()、Assmebly.LoadFile() 和Assembly.LoadFrom() 的区别,当然只是一家之言,也有疏忽之处,也希望大家批评指正。
代码如下:
1 //202309181033、通过多种方法加载程序集
2 {
3 //可以是程序集全名,也可以文件名,必须引用项目,拷贝到目录下无效
4
5 //1.1、Load加载(没有引用项目,直接将 DLL 拷贝到程序运行目录下)
6 {
7 //[1]、使用强命名的程序集名称,报错【Could not load file or assembly 'PatrickLiu.Database.SqlServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. 系统找不到指定的文件。】
8 Assembly assembly = Assembly.Load("PatrickLiu.Database.SqlServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
9
10 //[2]、使用程序集弱命名,包含后缀名,报错【Could not load file or assembly 'PatrickLiu.Database.SqlServer.dll, Culture=neutral, PublicKeyToken=null'. 系统找不到指定的文件。】
11 Assembly assembly2 = Assembly.Load("PatrickLiu.Database.SqlServer.dll");
12
13 //[3]、完整路径,程序集名称,包含后缀名,也报错【The given assembly name was invalid.】
14 Assembly assembly22 = Assembly.Load("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer.dll");
15
16 //[4]、完整路径,程序集名称,不包含后缀名,报错【The given assembly name was invalid.】
17 Assembly assembly23 = Assembly.Load("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer");
18
19 //[5]、程序集弱名称名称,不包含后缀名,报错【Could not load file or assembly 'PatrickLiu.Database.SqlServer, Culture=neutral, PublicKeyToken=null'. 系统找不到指定的文件。】
20 Assembly assembly24 = Assembly.Load("PatrickLiu.Database.SqlServer");
21
22 //[6]、通过 File 读取字节数据,包含程序集名称和文件后缀名,正常加载---VVVVVVV。
23 Assembly assembly25 = Assembly.Load(File.ReadAllBytes("PatrickLiu.Database.SqlServer.dll"));
24
25 //[7]、通过 File 读取字节数据,包含程序集名称,不包含文件后缀名,报错【Could not find file 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'.】。
26 //Assembly assembly26 = Assembly.Load(File.ReadAllBytes("PatrickLiu.Database.SqlServer"));
27
28 //[8]、通过 File 读取字节数据,包含程序集完整路径和文件后缀名,正常加载---VVVVVVV。
29 Assembly assembly27 = Assembly.Load(File.ReadAllBytes("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer.dll"));
30
31 //[9]、通过 File 读取字节数据,包含程序集完整路径,不包含文件后缀名,报错【Could not find file 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'.】。
32 Assembly assembly28 = Assembly.Load(File.ReadAllBytes("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer"));
33 }
34
35 //1.2、Load加载(直接引用项目,系统自己会拷贝,没有人为拷贝 DLL 到目录下)
36 {
37 //[1]、使用强命名的程序集名称,正常加载---VVVVVVV。
38 Assembly assembly = Assembly.Load("PatrickLiu.Database.SqlServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
39
40 //[2]、使用程序集弱命名,正常加载---VVVVVVV。
41 Assembly assembly2 = Assembly.Load("PatrickLiu.Database.SqlServer");
42
43 //[3]、完整路径,程序集名称和后缀名,也报错【The given assembly name was invalid.】
44 Assembly assembly22 = Assembly.Load("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer.dll");
45
46 //[4]、完整路径,程序集名称,不包含后缀名,报错【The given assembly name was invalid.】
47 Assembly assembly23 = Assembly.Load("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer");
48
49 //[5]、程序集弱名称名称,包含文件扩展名,报错【Could not load file or assembly 'PatrickLiu.Database.SqlServer, Culture=neutral, PublicKeyToken=null'. 系统找不到指定的文件。】
50 Assembly assembly24 = Assembly.Load("PatrickLiu.Database.SqlServer.dll");
51
52 //[6]、通过 File 读取字节数据,包含程序集后缀名,正常加载---VVVVVVV。
53 Assembly assembly25 = Assembly.Load(File.ReadAllBytes("PatrickLiu.Database.SqlServer.dll"));
54
55 //[7]、通过 File 读取字节数据,不包含程序集后缀名,报错【Could not find file 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'】。
56 Assembly assembly26 = Assembly.Load(File.ReadAllBytes("PatrickLiu.Database.SqlServer"));
57
58 //[8]、通过 File 读取字节数据,包含程序集完整路径和文件后缀名,正常加载---VVVVVVV。
59 Assembly assembly27 = Assembly.Load(File.ReadAllBytes("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer.dll"));
60
61 //[9]、通过 File 读取字节数据,包含程序集完整路径,不包含文件后缀名,报错【Could not find file 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'.】。
62 Assembly assembly28 = Assembly.Load(File.ReadAllBytes("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer"));
63 }
64
65 //总结:
66 //Assembly.Load()针对【添加项目引用】和【通过手动拷贝】来加载程序集是有区别的,如果通过 Visual Studio IDE 【添加项目引用】菜单引用了程序集,只要书写正确,都能正常加载程序集,支持【强命名程序集】加载和【弱命名程序集】加载,如果加载的是弱命名的程序集不要写程序集的后缀名(.dll),不需要书写程序集的完整或者相对路径。Assembly.Load(File.ReadAllBytes())这个方法参数可以接受:必须包含后缀名的程序集名称或者包含完整路径、并包含后缀名的程序集名称,形如:Assembly.Load(File.ReadAllBytes("XXX.dll(包含后缀名的程序集名称)")),Assembly.Load(File.ReadAllBytes("E:\\XX\\XXX\\XXXX\\PatrickLiu.Database.SqlServer.dll(包含完整路径、并包含后缀名的程序集名称)"))这两种方式都是有效的。如果在不引用程序集(是不通过VS菜单【添加项目引用】),还想使用 Assembly.Load() 方法成功加载程序集,只能通过 Assembly.Load(File.ReadAllBytes())这种方式,当然我只测试了这个接口,其他的大家可以尝试。
67
68 //2、LoadFile加载(必须是完整路径,包含扩展名,不用引用项目,拷贝到目录就可以)
69
70 //2.1、LoadFile()在不引用程序集,通过拷贝DLL到指定目录来执行
71 {
72 //[1]、只包含程序集的名称和文件扩展名,报错【Path "PatrickLiu.Database.SqlServer.dll" is not an absolute path. 】
73 Assembly assembly221 = Assembly.LoadFile("PatrickLiu.Database.SqlServer.dll");
74
75 //[2]、包含程序集完整路径,程序集名称和文件扩展名,正常加载--------VVVVVV。
76 Assembly assembly222 = Assembly.LoadFile("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer.dll");
77
78 //[3]、只包含程序集的名称,报错【Path "PatrickLiu.Database.SqlServer" is not an absolute path】
79 Assembly assembly223 = Assembly.LoadFile("PatrickLiu.Database.SqlServer");
80
81 //[3]、报错【Could not load file or assembly 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'. The system cannot find the file specified.”】
82 Assembly assembly224 = Assembly.LoadFile("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer");
83 }
84 //2.2、LoadFile()在引用程序集
85 {
86 //[1]、只包含程序集的名称和文件扩展名,报错【Path "PatrickLiu.Database.SqlServer.dll" is not an absolute path. 】
87 Assembly assembly221 = Assembly.LoadFile("PatrickLiu.Database.SqlServer.dll");
88
89 //[2]、包含程序集完整路径,程序集名称和文件扩展名,正常加载--------VVVVVV。
90 Assembly assembly222 = Assembly.LoadFile("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer.dll");
91
92 //[3]、只包含程序集的名称,报错【Path "PatrickLiu.Database.SqlServer" is not an absolute path】
93 Assembly assembly223 = Assembly.LoadFile("PatrickLiu.Database.SqlServer");
94
95 //[3]、报错【Could not load file or assembly 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'. The system cannot find the file specified.”】
96 Assembly assembly224 = Assembly.LoadFile("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer");
97 }
98
99 //总结:Assembly.LoadFile()方法使用也比较简单,无论是在【添加项目引用】还是【手动拷贝】都可以正常加载程序集,唯一要注意的就是,必须书写完整的程序集路径,程序集文件名,也包含扩展名。
100
101
102 //3、LoadFrom加载(程序集全名不可以,文件名也不可以,原因不知道,文件全名可以,不用引用项目,直接拷贝就可以)
103 //必须增加后缀名
104
105 //3.1、不引用项目,把所需的Dll 拷贝到目标目录下
106 {
107
108 //[1]、使用强命名的程序集名称,正常加载---VVVVVVV。
109 Assembly assembly31 = Assembly.LoadFrom("PatrickLiu.Database.SqlServer.dll");
110
111 //[2]、使用强命名的程序集名称,报错【Could not load file or assembly 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'. 系统找不到指定的文件。”】。
112 Assembly assembly32 = Assembly.LoadFrom("PatrickLiu.Database.SqlServer");
113
114 //[3]、完成的程序集路径,程序集名称,程序集扩展名,正常加载---VVVVVVV。
115 Assembly assembly33 = Assembly.LoadFrom("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer.dll");
116
117 //[4]、完成的程序集路径,程序集名称,程序集扩展名,报错【Could not load file or assembly 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'. 系统找不到指定的文件。】。
118 Assembly assembly34 = Assembly.LoadFrom("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer");
119 }
120
121 //3.2、引用项目,系统将 Dll 拷贝到目标目录下
122 {
123 //[1]、使用强命名的程序集名称,正常加载---VVVVVVV。
124 Assembly assembly31 = Assembly.LoadFrom("PatrickLiu.Database.SqlServer.dll");
125
126 //[2]、使用强命名的程序集名称,报错【Could not load file or assembly 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'. 系统找不到指定的文件。”】。
127 Assembly assembly32 = Assembly.LoadFrom("PatrickLiu.Database.SqlServer");
128
129 //[3]、完成的程序集路径,程序集名称,程序集扩展名,正常加载---VVVVVVV。
130 Assembly assembly33 = Assembly.LoadFrom("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer.dll");
131
132 //[4]、完成的程序集路径,程序集名称,程序集扩展名,报错【Could not load file or assembly 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'. 系统找不到指定的文件。】。
133 Assembly assembly34 = Assembly.LoadFrom("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer");
134 }
135
136 总结:Assembly.LoadFrom()使用起来相对简单一点,无论是在已经【添加项目引用】还是【手动拷贝】都可以正常加载程序集,但是方法的参数必须是:(1)、包含完整路径、程序集名称和后缀名的程序集,如:Assembly.LoadFrom("E:\\X\\XX\\XXX\\PatrickLiu.Database.SqlServer.dll"),(2)、参数必须包含程序集名称和后缀名,如:Assembly.LoadFrom("PatrickLiu.Database.SqlServer.dll")
137 }
1、Assembly.Load()针对【添加项目引用】和【通过手动拷贝】来加载程序集是有区别的,如果通过 Visual Studio IDE 【添加项目引用】菜单引用了程序集,只要书写正确,都能正常加载程序集,支持【强命名程序集】加载和【弱命名程序集】加载,如果加载的是弱命名的程序集不要写程序集的后缀名(.dll),不需要书写程序集的完整或者相对路径。Assembly.Load(File.ReadAllBytes())这个方法参数可以接受:必须包含后缀名的程序集名称或者包含完整路径、并包含后缀名的程序集名称,形如:Assembly.Load(File.ReadAllBytes("XXX.dll(包含后缀名的程序集名称)")),Assembly.Load(File.ReadAllBytes("E:\\XX\\XXX\\XXXX\\PatrickLiu.Database.SqlServer.dll(包含完整路径、并包含后缀名的程序集名称)"))这两种方式都是有效的。如果在不引用程序集(是不通过VS菜单【添加项目引用】),还想使用 Assembly.Load() 方法成功加载程序集,只能通过 Assembly.Load(File.ReadAllBytes())这种方式,当然我只测试了这个接口,其他的大家可以尝试。
2、Assembly.LoadFile()方法使用也比较简单,无论是在【添加项目引用】还是【手动拷贝】都可以正常加载程序集,唯一要注意的就是,必须书写完整的程序集路径,程序集文件名,也包含扩展名,如:Assembly.LoadFile("E:\\X\\XX\\XXX\\PatrickLiu.Database.SqlServer.dll")。
3、Assembly.LoadFrom()使用起来相对简单一点,无论是在已经【添加项目引用】还是【手动拷贝】都可以正常加载程序集,但是方法的参数必须是:(1)、包含完整路径、程序集名称和后缀名的程序集,如:Assembly.LoadFrom("E:\\X\\XX\\XXX\\PatrickLiu.Database.SqlServer.dll"),(2)、参数必须包含程序集名称和后缀名,如:Assembly.LoadFrom("PatrickLiu.Database.SqlServer.dll")
三、总结
好了,今天就写道这里了,总算还不错,能有点收获。如果以后有新的需求,在测试把。每天进步一点点,努力一直在路上。
在 Net7.0环境下测试了 Assembly.Load、Assmebly.LoadFile和Assembly.LoadFrom的区别的更多相关文章
- [原]Redis主从复制各种环境下测试
Redis 主从复制各种环境下测试 测试环境: Linux ubuntu 3.11.0-12-generic 2GB Mem 1 core of Intel(R) Core(TM) i5-3470 C ...
- linux环境下测试环境搭建
一.linux环境下测试环境搭建过程简述: 1.前端后台代码未分离情况下: 主要步骤为:安装jdk,安装mysql,安装tomcat,将项目代码部署到tomcat/webapps/下. 2.前端后台代 ...
- [VS2015].NET4.0环境下使用.NET2.0程序集,使用sqlite时报异常 出现“混合模式程序集异常”
在.net 4.0环境下使用sqlite时报异常 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集其调用的方法是从sqli ...
- VB6.0环境下的CATIA二次开发简介
CATIA作为CAD/CAE/CAM/PDM一体化的软件,广泛用于航空航天.汽车.船舶及电子工业,尤其在航空航天业,有八成以上厂商使用CATIA的市场[11].然而由于使用习惯和使用的侧重点不用,功能 ...
- Windows-Server-2008、IIS7.0环境下配置伪静态化
在Windows-Server-2008.IIS7.0环境下配置伪静态化 首先,是IIS7.0的配置,由于Windows Server 2008操作系统默认的IIS版本为 ...
- 使用zipkin2在SpringCloud2.0环境下追踪服务调用情况
1.目的: 使用zipkin2.0在Spring Cloud 2.0环境下,追踪服务调用情况. 2.所需组件: zipkin2.0,Spring Cloud 2.0,Eureka Server,Eur ...
- [转]mongodb authentication 设置权限之后,新建个管理账户和一般数据库用户,在win 7 64bit 环境下测试使用实例
如果之前安装mongodb时没有使用 --auth,那么必须要卸载MongoDB服务,进行重新安装,设置账号权限才生效! 主要是解决在测试使用mongo db 时候,总是出现的MongoAuthent ...
- 【swoole】如何在docker+swoole环境下测试udp服务
前面几篇文章讲了使用 docker+swoole 环境来测试tcp服务以及如何测试,但是当我开始学习udp服务那块的时候,发现使用原来的方式在 docker+swoole 环境下行不通啦,后来发现如果 ...
- 转 Visual C++6.0 与matlab联合编程(2)----Visual C++6.0 环境下编译和调试MEX文件
我的最初想法是利用matlab的mex命令调用C++程序生成动态链接库的,但是测试程序(文中另附)通过了,自己的实际应用程序却没有过.还是把方法贴在这儿,以便自己以后进行整理. http://shij ...
- .NET Core2.0 环境下MVC模式的支付宝扫码支付接口-沙箱环境开发测试
所有配置以及相关信息均可以从PC支付中获取 使用的生成二维码的组件名为QRCoder,该组件引用了一个第三方实现的System.Drawing类库,和支付宝官网类似 当面付SDK为Alipay.Aop ...
随机推荐
- Spring Cloud开发实践(七): 集成Consul配置中心
目录 Spring Cloud开发实践(一): 简介和根模块 Spring Cloud开发实践(二): Eureka服务和接口定义 Spring Cloud开发实践(三): 接口实现和下游调用 Spr ...
- SpringBoot+MyBatisPlus实现读写分离
前言 随着业务量的不断增长,数据库的读写压力也越来越大.为了解决这个问题,我们可以采用读写分离的方案来分担数据库的读写负载.本文将介绍如何使用 Spring Boot + MyBatis Plus + ...
- 如何通过AWS的云安全服务保护企业数据
目录 随着企业数字化程度的不断加深,数据安全和隐私保护成为了企业面临的新的挑战.在数字化转型的过程中,企业需要处理大量的数据,这些数据的安全性和隐私保护的重要性不言而喻. AWS 云安全服务是Amaz ...
- PostMan如何联调SignalR WebSockets
我们在调试SignalR的时候,往往要写多一个客户端对接联调.其实,在过去的几个版本中,Postman 已经能够使用 WebSocket 连接连接到 SignalR 中心并发送和接收消息. 设置请求 ...
- 【Java】工具类 -- 持续更新
Java原生工具类 Objects requireNotNull():为空抛异常,不为空返回本身 deepEquals():对象深度相等(数组层面)判断 调用Arrays.deepEquals0() ...
- DevOps|研发效能治理:进化史、规模化与治理复杂性
麻广广@码猿外 研发效能这个词近几年火遍全网,各大企业都加入了研发效能治理的行列,开始梳理企业内部各个团队的研发流程,以期望找到企业降本增效的方向. 抛开政治因素,研发效能治理我们到底是在谈什么呢?从 ...
- 2021-8-5 Microsoft文档学习笔记(C#)
以下列表概述了类可以包含的成员类型. 常量:与类相关联的常量值 字段:与类关联的变量 方法:类可执行的操作 属性:与读取和写入类的已命名属性相关联的操作 索引器:与将类实例编入索引(像处理数组一样)相 ...
- TypeScript:接口
介绍 TypeScript的核心原则之一是对值所有的结构类型进行类型检查.在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义约束. 接口的基本使用 interface ...
- pycharm:插件translation 更新TTK失败
解决方案 1.修改C:\Windows\System32\drivers\etc 下hosts文件, 添加 203.208.40.66 translate.google.com 203.208.40. ...
- 配置DHCP
配置DHCP 条件:关闭防火墙 和selinux 1,安装dhcp服务 [root@localhost ~]#yum install dhcp -y#安装dhcp服务 2,查看配置文件 [root@l ...