获取snk文件的公钥
生成snk(如果有则跳过):
sn -k MyKeyPair.snk生成公钥文件:
sn -p MyKeyPair.snk MyKeyPair.Public.snk显示公钥:
sn -tp MyKeyPair.Public.snk
生成snk(如果有则跳过):
sn -k MyKeyPair.snk生成公钥文件:
sn -p MyKeyPair.snk MyKeyPair.Public.snk显示公钥:
sn -tp MyKeyPair.Public.snk反汇编 DLL:
ildasm /all /out:Assembly.il YourAssembly.dll修改 IL 文件:
在生成的 Assembly.il 文件中添加强名称密钥引用:
.assembly YourAssembly
{
.publickey = (生成的公钥令牌)
.ver 1.0.0.0
}如:
.publickey = (00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 // .$..............
00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 // .$..RSA1........
17 51 79 E3 E5 00 53 AA 1D 7C 9D 09 31 0D D2 AE // .Qy...S..|..1...
CD 6E 80 FF C7 33 14 9E CD 64 AA 2E F1 D0 A7 0C // .n...3...d......
BF 92 D4 70 E1 7E 42 60 AF 61 21 63 5F 68 03 07 // ...p.~B`.a!c_h..
A2 A3 B3 96 AC BC 38 BC 46 19 33 D9 9D 30 07 21 // ......8.F.3..0.!
FC 8D FC 8F 89 C0 8A 33 80 69 59 3B 36 54 3F A2 // .......3.iY;6T?.
5F 1D CF 63 44 43 2C 40 E0 4D CB 1D 1C 18 DB C5 // _..cDC,@.M......
14 DC C9 A6 35 AF 28 3F 44 E1 E9 8B 06 6D 70 8B // ....5.(?D....mp.
0F F5 7E 92 6C AB 3D 1B 0D 41 7E 34 E4 1A 45 E1 ) // ..~.l.=..A~4..E.
创建强名称密钥(如果没有):
sn -k MyKeyPair.snk重新汇编:
ilasm /dll /key=MyKeyPair.snk /output=YourAssembly_Signed.dll Assembly.il| Visual Studio 版本 | .NET 版本 | C# 版本 | 主要新特性(C#) |
|---|---|---|---|
| VS 2022 (17.0+) | .NET 6-9 | C# 10-12 | 记录结构、全局using、文件作用域命名空间、原始字符串字面量等 |
| VS 2019 (16.0+) | .NET Core 3.x/.NET 5 | C# 8.0-9.0 | 默认接口方法、异步流、索引和范围、模式匹配增强等 |
| VS 2017 (15.0+) | .NET Core 1.x-2.x | C# 7.0-7.3 | 元组、模式匹配、本地函数、ref返回值等 |
| VS 2015 | .NET 4.6 | C# 6.0 | 空条件运算符、字符串插值、nameof表达式等 |
| VS 2013 | .NET 4.5.1 | C# 5.0 | 异步/await、调用者信息特性 |
| VS 2012 | .NET 4.5 | C# 5.0 | 异步/await(主要) |
| VS 2010 | .NET 4.0 | C# 4.0 | 动态类型、命名参数、可选参数 |
| VS 2008 | .NET 3.5 | C# 3.0 | LINQ、Lambda表达式、扩展方法 |
| VS 2005 | .NET 2.0 | C# 2.0 | 泛型、匿名方法、迭代器 |
以下是汇总了Windows每个版本自带的“.NET版本”,与支持的最高“.NET版本”的表格
| Windows版本 | 自带.NET Framework 版本 | 支持最高的 .NET Framework 版本 |
|---|---|---|
| Windows NT 4.0 SP6a、2000 | .NET Framework 1.1 SP1 | |
| Windows 98, 98SE, Me, 2000 SP3 | .NET Framework 2.0 | |
| Windows 2000 SP4 | .NET Framework 2.0 SP2 | |
| Windows XP SP1 | .NET Framework 1.0 SP2 | .NET Framework 1.0 SP2 |
| Windows XP SP2 | .NET Framework 1.1 SP1 | .NET Framework 3.5 SP1 |
| Windows XP SP3 | .NET Framework 1.1 SP1 | .NET Framework 4.0 |
| Windows Vista | .NET Framework 3.0 | .NET Framework 3.5 SP1 |
| Windows Vista SP1 | .NET Framework 3.0 SP1 | .NET Framework 4.0 |
| Windows Vista SP2 | .NET Framework 3.0 SP2 | .NET Framework 4.6 |
| Windows 7 | .NET Framework 3.5.1 SP1 | .NET Framework 4.0 |
| Windows 7 SP1 | .NET Framework 3.5.1 SP1 | Latest |
| Windows 8 | .NET Framework 3.5.1 SP1 + 4.5 | .NET Framework 4.6.2 |
| Windows 8.1 | .NET Framework 3.5.1 SP1 + 4.5.1 | .NET Framework 4.5.2 |
| Windows 8.1 Update | .NET Framework 3.5.1 SP1 + 4.5 | Latest |
| Windows 10 (1507) | .NET Framework 4.6 | Latest |
| Windows 10 (1511) | .NET Framework 4.6.1 | Latest |
| Windows 10 (1607) | .NET Framework 4.6.2 | Latest |
| Windows 10 (1703) | .NET Framework 4.7 | Latest |
| Windows 10 (1709) | .NET Framework 4.7.1 | Latest |
| Windows 10 (1803 ~ 1809) | .NET Framework 4.7.2 | Latest |
| Windows 10 (1903 ~ v20H2) | .NET Framework 4.8 | Latest |
| Windows 11 | .NET Framework 4.8 | Latest |