美文网首页
强命名程序集的编译

强命名程序集的编译

作者: 大唐雷恋 | 来源:发表于2018-08-17 17:23 被阅读0次

没有*.snk文件的话自行百度如何生成*.snk文件,以下针对有snk文件的情况说明:

1.通过密钥文件*.snk生成公钥文件(生成的公钥文件可以查看公钥hash值,还有publickeytoken)

sn -p  路径\密钥.snk  路径\公钥.snk

2.查看公钥hash值和publickeytoken

sn -tp 路径\公钥.snk

3.用私钥文件签名程序集,得到强命名程序集:

vs中项目属性,签名->为程序集签名->选择私钥文件,编译即可。

编译的时候可能提示“友元程序集需要提供internal.....”,需要在AssemblyInfo.cs文件中把公钥hash值填进去,类似这样:

[assembly: System.Runtime.CompilerServices.InternalsVisibleTo(AssemblyRef.AssemblyPrefix + ".Win.UltraWinGanttView.v" + Infragistics.Shared.AssemblyVersion.MajorMinor + " , PublicKey = 0024000004800000940000000602000000240000525341310004000001000100df148327e2b6b827ba012a387bc777cc0fb6ebf0d0f07b85552af78402fb131aa8ba9183f8377e80e57531bf5225dd94bbef17921b4336351b3df8496fd2963af68ec7f6b30320125356323bbceb8599d20ac59fa6346dec768ac08e62e3ef4052112ddc5921365313cb9f67dff6088f819c0a14088f34fc19df17ef5e13deec")]

备注:经过签名的强命名程序集,使用反编译工具(reflector或者ilspy),可以看到publickeytoken值,如果是非强命名程序集,可以看到这个值是空的。

强命名程序集是可以反编译的,起不到保护代码的作用,其实,它的作用是保证dll的版本不被恶意程序随意替换,如果注册到GAC中,可以防止dll hell的问题。

如何注册到GAC可以自行百度。

相关文章

  • 强命名程序集的编译

    没有*.snk文件的话自行百度如何生成*.snk文件,以下针对有snk文件的情况说明: 1.通过密钥文件*.snk...

  • C#图解教程笔记20170720

    全局程序集缓存(GAC),放进GAC的程序集称为共享程序集 只有强命名程序集能被添加到GAC GAC不仅值接受.d...

  • C#学习笔记

    程序结构 程序(program) 命名空间(namespace) 类型(type) 成员(member) 程序集(...

  • [Unity 3d] 编辑器程序集编译API - 笔记

    本文是个笔记,记录 2 个编辑器下编译程序集的逻辑。 一 . 编译 Runtime 用的程序集 Runtime 用...

  • 请简述.NET的命名空间

    命名空间 一个程序集内相关类型的一个分组,一个程序集可以包含任意个命名空间,每个命名空间又可以包含多种类型。 根命...

  • Internal关键字

    同一程序集的文件中可访问,程序集是经由编译器编译得到的,供CLR进一步编译执行的那个中间产物,在WINDOWS系统...

  • C# Marshal.StringToHGlobalAnsi(S

    命名空间:System.Runtime.InteropServices程序集:System.Runtime.Int...

  • EOS 智能合约编写(一)

    1 hello例子 编译 将代码编译为Web程序集(.wast) eosiocpp -o hello.wast h...

  • CLR中的程序集

    在CLR中,程序集相当于“组件”。 程序集的产生过程:C# 源代码文件----->(经过编译器[CSC.exe]编...

  • C++ 注释的不正确嵌套

    用以下程序举例: 命名为 exa.cpp,然后编译这个程序。 输出的报错... 如果不是已经知道了问题才看到报错,...

网友评论

      本文标题:强命名程序集的编译

      本文链接:https://www.haomeiwen.com/subject/ihetiftx.html