编程语言
首页 > 编程语言> > clr via c# 程序集

clr via c# 程序集

作者:互联网

1,程序集的种类

2,为程序集分配强名称

   强命名程序集有4个重要特征---程序集显式名称

    “MyTypes,Version=1.0.8123.0,Culture=neutral,publicKeyToken=b77a7c761934e089”

3,创建强程序集

  1. 使用 SN.EXE 创建 在目录下创建密钥文件:MyCompany.snk
  2. PS C:\reps\Clr VIA C#> SN -k MyCompany.snk
  3. 可以将公钥文件输出到一个公钥文件中去
  4. PS C:\reps\Clr VIA C#> SN -p MyCompany.snk MyCompany.PublicKey sha256
    PS C:\reps\Clr VIA C#> SN -tp .\MyCompany.PublicKey
    Microsoft(R) .NET Framework 强名称实用工具 版本 4.0.30319.0
    版权所有(C) Microsoft Corporation。保留所有权利。
    
    公钥(哈希算法: sha256):
    002400000c8000009400000006020000002400005253413100040000010001005d78d177c10143
    8f68c31edc10f3f13d20a1065302831f606e5300913b234c246b41176ca426d2ca5e5f69dee43c
    05d19d577a199868a82c0ab0da5c8900250e4d435d98a222d2a10db055eb526b7521ef4979d858
    a616cb3565a12e7be7a4a4528af38267f9b0adc52bb91e43f09000d380ed07abea82d8c7e30dce
    89ed46ab
    
    公钥标记为 595a9e13589e00b9

        

  3,创建程序集的几个办法----官网链接

4,部署强命名程序集

      gacutil.exe---使用详解---必须管理员模式打开VS,打开powshell。

      进入到dll所在目录

gacutil.exe /i s7.net

  然后在这个位置查看到其存在

C:\Windows\Microsoft.NET\assembly\GAC_MSIL\S7.Net\v4.0_1.0.0.0__d5812d469e84c693

然后在注册表中注册

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\S7.NET

image

没有的项就新建

5,然后在引用的搜索里面就可以看到了

image

6,运行时如何解析引用类型:

      使用ILDASM.EXE 并且在视图---查看字节----然后点击MAIN方法

.method private hidebysig static void  Main(string[] args) cil managed
// SIG: 00 01 01 1D 0E
{
  .entrypoint
  // 方法在 RVA 0x2050 处开始
  // 代码大小       17 (0x11)
  .maxstack  8
  IL_0000:  /* 72   | (70)000001       */ ldstr      "hi"
  IL_0005:  /* 28   | (0A)00000F       */ call       void [mscorlib]System.Console::WriteLine(string)
  IL_000a:  /* 28   | (0A)000010       */ call       valuetype [mscorlib]System.ConsoleKeyInfo [mscorlib]System.Console::ReadKey()
  IL_000f:  /* 26   |                  */ pop
  IL_0010:  /* 2A   |                  */ ret
} // end of method Program::Main


   使用视图----元信息----显示(^M)

TypeRef #17 (01000011)
-------------------------------------------------------
Token:             0x01000011
ResolutionScope:   0x23000001
TypeRefName:       System.Console
	MemberRef #1 (0a00000f)
	-------------------------------------------------------
		Member: (0a00000f) WriteLine:
		CallCnvntn: [DEFAULT]
		ReturnType: Void
		1 Arguments
			Argument #1:  String
	MemberRef #2 (0a000010)
	-------------------------------------------------------
		Member: (0a000010) ReadKey:
		CallCnvntn: [DEFAULT]
		ReturnType: ValueClass System.ConsoleKeyInfo
		No arguments.

7,管理控制

  略

标签:MyCompany,via,c#,程序,System,snk,公钥,IL,clr
来源: https://www.cnblogs.com/frogkiller/p/12241387.html