依据文档:

https://msdn.microsoft.com/en-us/library/hh415055(v=vs.110).aspx

虽然文档上给出了看似完整的步骤,但是如果按照上面的步骤,结果是失败的。而且文档的里的option还用错了。(-ac应该用-a, -ac是用于keypaircontainer)

以下是一个完整的强签名迁移的sample:

用于测试的代码,可以建一个console app,类似下面的例子:

using System;

using System.Reflection;

namespace CLR6

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.ReadLine("Hello world!");

        }

    }

}

按照Signing with SHA-2, with Key Migration的1~3步骤,生成

IdentityKey.snk,SignatureKey.snk,IdentityPubKey ,sha256的SignaturePubKey.snk。

然后用第四步的命令来获取AssemblySignatureKeyAttribute需要的两个参数,注意用-a而不是-ac:

sn -a IdentityPubKey.snk IdentityKey.snk SignaturePubKey.snk

生成的两个参数需要从控制台窗口拷贝到本地,可以存到text文件。

在需要重签名的程序文件添加assembly标签,通常是把它放在AssemblyInfo.cs文件中:

using System;

using System.Reflection;

[assembly: AssemblySignatureKeyAttribute("002400000c800000940000000602000000240000525341310004000001000100e3997384795973ec459c8ec80019bce59a2edb42dd069cc4f25037370f41e0d041eff3995d26ed28fa0610105ffee4c61992b64a79bfb3af07321eeea3c3c8b9b149efdd5c3ac2962e7ce0d416c5bb1637d438aeb09648f40db8d3d04081f554adf8ea1295b1344bfdde7ec48cae46bdd68f58aa00f4e37a289e55972446b9bc",

"8f29590c4f363e4c468f12c324f5d8ce76887a6bb246dd3237204a8f3232d1284c5a3a74405f235715527b7bd4ff73cd17ee242b863a335cb55c368f6ae8f769d6374fa9daa850d9aed6f19c989b44ffd56a0d8088629962d0e66bf942b3d21a11f54ef5f2800b404a4cc63dcf6380186366caea7c2a8ce25a433767ea2f828e")]

namespace CLR6

{

    class Program

    {

        static void Main(string[] args)

        {

        }

    }

}

然后运行延迟签名和fully sign命令。这样一个加强了的强命名程序集产生了,用ildasm看元数据的话, 很清楚的能看到AssemblySignatureKeyAttribute被编译器插入到程序集中了。

[.NET] - Enhanced Strong Naming (加强版的强签名程序集) – 如何迁移原有的强命名程序集的更多相关文章

  1. 使用InternalsVisibleToAttribute给assembly添加“友元assembly”特性遭遇"强签名"

    一.如何让Intenal成员暴露给另一个程序集 我们知道Modifier为Internal的类型成员仅限于当前程序集能够访问,但是在某些情况下,我们希望将它们暴露给另一个程序集.比较典型的应用场景包括 ...

  2. 从编译DotNetOpenAuth中学到的程序集强签名知识

    1. 背景 最近在研究DotNetOpenAuth——OAuth的一个.NET开源实现,官方网站:http://dotnetopenauth.net/ . 从GitHub签出DotNetOpenAut ...

  3. NET 强签名

    强签名: 1. 可以将强签名的dll注册到GAC,不同的应用程序可以共享同一dll. 2. 强签名的库,或者应用程序只能引用强签名的dll,不能引用未强签名的dll,但是未强签名的dll可以引用强签名 ...

  4. dll强签名的由来和作用

    C# dll强签名介绍 之前基本没有这个概念,直到有一天我们的dll被反编译了,导致我们的代码基本上被看到了,才想起来要保护dll的安全性,因为C#语言的在编译过程中会产生中间语言导致dll很容易被反 ...

  5. .NET:强签名程序集的加载问题 之 版本重定向

    背景 多数解决方案会包含多个项目,某些支持插件架构的解决方案中,更是包含多个插件项目,这些项目会使用一些第三方NuGet Packages,如果管理不慎,解决方案中会出现多个版本的引用,这在编译期间不 ...

  6. C# 给主程序签名及第三方dll强签名操作

    1.给主程序添加签名   添加完成后会自动生成一个*.pfx文件.     2.给第三方程序添加强签名方法:   本文以WAPIWrapperCSharp.dll为例,使用vs Tools下的工具命令 ...

  7. .Net程序集强签名详解

    强签名: 1. 可以将强签名的dll注册到GAC,不同的应用程序可以共享同一dll. 2. 强签名的库,或者应用程序只能引用强签名的dll,不能引用未强签名的dll,但是未强签名的dll可以引用强签名 ...

  8. VS报:"dll标记为系统必备组件,必须对其进行强签名"错误

    问题: VS生成程序时,报“要将程序集“XX.dll”标记为系统必备组件,必须对其进行强签名.”错误. 解决方法: 1)在报错的解决方案中找到一个可以发布的项目(引用该XX.dll的项目未必可以发布) ...

  9. 给主程序签名及第三方dll强签名

    给主程序添加签名   添加完成后会自动生成一个*.pfx文件.     给程序添加强签名方法:   本文以Quartz.dll为例,使用vs Tools下的工具命令.   打开命令工具是这个样子,   ...

随机推荐

  1. E - Knapsack 2 题解(超大01背包)

    题目链接 题目大意 给你一n(n<=100)个物品,物品价值最大为1e3,物品体积最多为1e9,背包最大为1e9 题目思路 如果按照平常的背包来算那么时间复杂度直接O(1e11) 这个你观察就发 ...

  2. MySQL全面瓦解13:系统函数相关

    概述 提到MySQL的系统函数,我们前面有使用过聚合函数,其实只是其中一小部分.MySQL提供很多功能强大.方便易用的函数,使用这些函数,可以极大地提高用户对于数据库的管理效率,并更加灵活地满足不同用 ...

  3. MacOS Big Sur11.0升级后Eclipse启动报错

    本次升级MacOS Big Sur11.0.1之后,开启Eclipse时报空指针,打开页面空白,之后卸掉, 再次安装时提示加载不到libserver.dylib 或 Could not create ...

  4. leetcode_3FizzBuzz的一些思考

    题目很简单,给定一个正整数n,如果n能整除3的话往list里加入Fizz,如果n能整除5的话往list里面加入Buzz,如果即能整除3又能整除5的话,加入FizzBuzz,代码也很简单 public ...

  5. Android面试题《思考与解答》11月刊

    又来更新啦,Android面试题<思考与解答>11月刊奉上. 说说View/ViewGroup的绘制流程 View的绘制流程是从ViewRoot的performTraversals开始的, ...

  6. Kubernetes中Service的使用

    目录 简介 1. Service资源定义 1.1 Service Type ClusterIP 无头service NodePort sessionAffinity实现源地址session绑定 简介 ...

  7. YoyoGo使用指南

    YoyoGo是一个使用Golang编写的一个简单.轻量.快速.基于依赖注入的微服务框架,目前依然在研发阶段,欢迎Star以及一起参与到框架的研发 GitHub地址:https://github.com ...

  8. js实现视频截图,视频批量截图,canvas实现

    截取视频的某一时间的图像并保存 利用canvas的绘画能力画出视频某一帧的视频画面, 获得到图像之后转换成base64图像, 再利用a标签的实现自动保存到本地 html代码 <!DOCTYPE ...

  9. MyBatis-01:环境搭建

    MyBatis-01:环境搭建 1.搭建实验数据库 CREATE DATABASE `mybatis`; USE `mybatis`; DROP TABLE IF EXISTS `user`; CRE ...

  10. OutputFormat---自定义输出方式

    简介 可以自定义输出的格式和文件,例如包含某字段的输出到一个指定文件,不包含某字段的输出到另一个文件. 案例 数据 www.nevesettle.com www.baidu.com www.qq.co ...