首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用al.exe对具有强名称的程序集进行签名时,"模块名称"是什么?

在使用al.exe对具有强名称的程序集进行签名时,"模块名称"指的是要签名的程序集中的模块的名称。模块是指程序集中的一个独立的代码单元,可以是一个源代码文件、一个编译单元或一个动态链接库(DLL)文件。模块名称用于标识要签名的特定模块,以确保签名只应用于指定的模块。

在使用al.exe进行签名时,可以通过指定模块名称来选择要签名的模块。这样可以灵活地对程序集中的不同模块进行签名,而不是对整个程序集进行签名。这在某些情况下可能是有用的,例如当只需要对程序集中的特定模块进行数字签名时。

需要注意的是,模块名称必须与程序集中的实际模块名称完全匹配,否则签名过程将失败。因此,在使用al.exe进行签名时,确保提供正确的模块名称非常重要。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

《CLR via C#》Part1之Chapter2 生成、打包、部署及管理应用程序及类型(二)

模块合并到程序 exe文件不仅仅是一个含有元数据PE文件,它还是一个程序(assembly)。程序是一个或者多个类型定义文件及资源文件集合。 CLR操作程序。...CLR总是首先加载包含“清单”元数据表文件,再根据“清单”来获取程序集中其他文件名称。(清单是一组元数据表集合)。...总之,程序进行重用、版本控制和应用安全性设置一个基本单元,它允许将类型和资源文件划分到单独文件中。...使用程序链接器 除了使用C#编译器,我们还可以使用程序链接器”实用程序AL.exe来创建程序。...AssemblyVersion 这个版本号存储在AssemblyDef清单元数据列表中,CLR在绑定到命名程序,会使用这个版本号。它唯一标识了一个程序

60220

当InternalsVisibleToAttribute特性遭遇签名

一个组件或者模块进行单元测试时候,单元测试用例需要调用定义在被测试组件或者模块Internal成员。 ?...从上面的出错消息中我们不难看出,编译错误原因是:当自身具有签名情况下,通过InternalsVisibleToAttribute指定程序也需要具有签名。...那么,如果我们将单元测试项目Test也加上签名,并将InternalsVisibleToAttribute特性指定成程序名称,是否可以解决这个问题呢?...在对Test项目按照上面的步骤进行签名后,并重新修改了应用在Lib程序InternalsVisibleToAttribute特性设置,即设置成包含4个部分(名称、版本、语言文化和公钥令牌)程序名称...四、需要指定是完整公钥 实际上对于上面的情况,需要指定不是程序命名,而是指定程序进行签名采用公钥。那么如何得到这个公钥呢?

648110
  • 程序员级别鉴定书(.NET面试问答集锦)

    这里问名称概念。Assembly.Load("foo.dll")加载程序方法是否正确? 签名程序与非签名程序有何不同? DateTime 可以为null吗? 什么是 JIT?...不对,正确方式为:Assembly.Load("foo, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3") 签名程序与非签名程序有何不同...通过签发具有签名程序集合,可以确保名称全局唯一性!因为名称是依赖于唯一密钥来确保名称唯一性,其他人不会生成与你相同程序名称(不同私钥产生名称不同)。...名称保护程序版本沿袭,因为名称唯一性能够确保没有其他人能够生成你程序后续版本。...名称提供可靠完整性检查,通过.NET Framework安全检查后,可以确保程序内容在生成后未被更改过! DateTime 可以为null吗? DateTime 不能为null。

    1.8K70

    二、源代码=>程序程序概念介绍

    文本脉络图如下: 一、源代码-面向CLR编译器-托管模块-(元数据&IL代码)中介绍了编译器将源文件编译成托管模块(中间语言和元数据),本文主要介绍如何将托管模块合并成程序. 1、程序基本概念...2、程序生成过程 注: (1)、清单指出程序只有一个文件组成, (2)、对于只有一个托管模块,没有资源文件项目,程序就是托管模块. (3)、如果需要将一组文件合并到程序集中可以使用程序链接器...(AL.exe)以及其他一些命令行选项. 3、如何构建可重用、可版本控制、可保护组件....可以在不同地方部署,同时任然将所有的文件当作一个整体来看待. 4、关于程序自描述优点 在程序模块中,还包含与引用程序有关信息(版本号、描述等等),具体如下图 这些信息(当然远不止上图中这点信息...)使程序能够自描述.也就是说CLR能判断为了执行程序集中代码,程序直接依赖对象是什么.不需要在注册表或者Active Directory Domain Services(ADDS)中注册额外信息

    80090

    浅谈.Net反射 2

    CLR头是托管模块所特有的,一般包含以下信息: CLR版本号, 一些标志 模块入口方法 名称数字签名(可选) 元数据是由几个表构成二进制数据块。...在编译源代码,代码定义任何东西都导致在元数据-定义表中创建一个与之对应记录项。 元数据-引用表包含哪些信息? AssemblyRef:在模块中引用每一个程序都有一个记录项。...具体包含程序名称,版本,公钥等。 ModuleRef:在模块中引用类型所在每一个PE模块都有一个记录项。 具体包含模块文件名,扩展名。...主要包含作为程序组成部分那些文件名称,还描述了程序版本,语言文化,发布者,公开导出类型以及构成程序所有文件。 CLR只认识程序。...由于有了清单,我们不用关系程序划分细节,同时也使程序具有自我描述性。 本文回顾: 程序四个组成部分 元数据是由三种表构成数据块 元数据-定义表 元数据-引用表 元数据-清单表

    32520

    通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?

    这时候我们就必须扩展一下这个名字以让它具有唯一性。 我们可以通过sn.exe或VS项目右键属性在签名选项卡中采取RSA算法程序进行数字签名(加密:公钥加密,私钥解密。...名称程序具有唯一标识性程序,并且可以通过对比哈希值来比较程序是否被篡改,不过仍然有很多手段和软件可以去掉程序签名。...需要值得注意一点是:当你试图在已生成好名称程序集中引用弱名称程序,那么你必须名称程序进行签名并在名称程序集中重新注册。...之所以这样是因为一个程序是否被篡改还要考虑到该程序所引用那些程序,根据CLR搜索程序规则(下文会介绍),没有被签名程序可以被随意替换,所以考虑到安全性,名称程序必须引用名称程序,...名称程序是先找到与程序名称(VS中项目右键属性应用程序->程序名称)相等文件名称,然后 按照唯一标识再来确认,确认后CLR加载程序,同时会通过公钥效验该签名来验证程序是否被篡改(如果想跳过验证可查阅

    2.7K63

    通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?

    名称程序具有唯一标识性程序,并且可以通过对比哈希值来比较程序是否被篡改,不过仍然有很多手段和软件可以去掉程序签名。...需要值得注意一点是:当你试图在已生成好名称程序集中引用弱名称程序,那么你必须名称程序进行签名并在名称程序集中重新注册。...之所以这样是因为一个程序是否被篡改还要考虑到该程序所引用那些程序,根据CLR搜索程序规则(下文会介绍),没有被签名程序可以被随意替换,所以考虑到安全性,名称程序必须引用名称程序,...名称程序是先找到与程序名称(VS中项目右键属性应用程序->程序名称)相等文件名称,然后 按照唯一标识再来确认,确认后CLR加载程序,同时会通过公钥效验该签名来验证程序是否被篡改...既然是共享存放位置,那不可避免会遇到文件名重复情况,那么为了杜绝该类情况,规定在GAC中只能存在名称程序,每当CLR要加载名称程序,会先通过标识去GAC中查找,而考虑到程序文件名称一致但版本文化等复杂情况

    4.5K30

    认识目标文件符号

    链接器会在将程序最终链接成可执行文件时候将其解析成正确值,注意,只有使用 ld 链接生产最终可执行文件时候这些符号才会存在。几个很具有代表性特殊符号如下,其他特殊符号,在此不一一列举了。...编译器在将 C++ 源代码编译成目标文件,会将函数和变量名字进行修饰,形成函数签名。...由于上面6个同名函数参数类型及所处类和名称空间不同,C++ 函数名进行修饰后产生函数签名不同,所以即使函数名相同,编译器和链接器都认为它们是不同函数。...所以很明显,上面的代码中,C++名称修饰机制将不会起作用。 由于 GCC C 变量和函数没有修饰, C++ 变量进行了修饰,下面看一个使用未经修饰 C 符号来访问C++变量例子。...,从而使得程序可以使用自定义版本库函数;或者程序可以对某些扩展功能模块引用定义为弱引用,当我们将扩展模块程序链接在一起,功能模块就可以正常使用;如果我们去掉了某些功能模块,那么程序也可以正常链接

    1.5K40

    C#反射与特性(一):反射基础

    HashAlgorithm 获取或设置程序清单使用哈希算法。 KeyPair 获取或设置用于为程序创建名称签名加密公钥/私钥。 Name 获取或设置程序简单名称。...例如: GetName 方法返回一个 AssemblyName 对象,该对象提供程序显示名称各个部分访问。 GetCustomAttributes 方法列出应用于程序特性。...GetFiles 方法提供程序清单中文件访问。 GetManifestResourceNames 方法提供程序清单中资源名称。...2.3.1 Assembly.Load() Assembly.Load() 以类型方式去加载程序名称程序签名 指的是 程序具有唯一和不可更改标识。 何以为类型?...》《18.2 名称程序签名》部分,这里不再赘述。

    1.3K50

    Visual Studio程序签名一个很不好用地方

    解决方案就是相关程序进行签名,并加到GAC中,是Unit Test能够识别基于LogicalCallContext项目的类型。...现在我们右击Lib1项目文件,选择Properties菜单项进行项目属性对话框,选择Signing Tab页进行程序签名相关设置。...最终被用于程序签名不是我们希望那个File Key,而是该File Key复制品(如右图所示)。 我不太明白微软如此设计具有怎样考虑,但是对于我们目前项目来说,我是无法接受。...解决方案2:通过命令行进行签名 相信大家通过命令行程序进行签名方式都不会感到陌生。...这种方式就是直接使用.NET Framework为我们提供名称工具(SN.exe: Strong Name Tool)。

    66390

    《CLR via C#》Part1之Chapter3 共享程序命名程序(二)

    由于弱类型程序总是私有部署,所以当CLR在应用程序基目录或者子目录中搜索程序文件,只会使用程序名称(添加一个.dll或者.exe)。...类型程序则是由一个文件名、一个版本号和一个语言文化(culture),除此之外,命名程序使用发布者私钥进行签名。...创建类型步骤: 使用Strong Name实用程序(SN.exe)来获取一个密钥。(这个程序与.NET Framework SDK和MS VS配套提供。)Eg....VS2012中创建公钥/私钥文件,可显示项目属性,进入“签名”选项卡,勾选为“程序签名”,选择新建,如下图 ? 下面这幅图描述了CLR“一个文件进行签名” ?...全局程序缓存 如果一个 程序要由多个应用程序访问,必须把它放在一个已知目录中,而且CLR在检测到程序一个引用时,必须知道自动检查该目录,这个已知位置称为全局程序缓存(Global

    50520

    CLR查找和加载程序方式(一)

    系统搜索dll目录以及顺序   CLR解析一个程序集会在一个根目录内进行搜索,整个探索过程又称Probing,这个根目录很显然就是当前包含当前程序目录。   ...程序搜索DLL顺序如下(区分名称签名、没有名称签名程序) 没有做名称签名程序 程序根目录 根目录下面,与被引用程序同名子目录 根目录下面被明确定义为私有目录子目录 在目录中查找时候...,如果dll查找不到,则会尝试查找同名exe 如果程序带有区域性,而不是语言中立,则还会尝试查找以语言区域命名子目录 名称签名程序 全局程序缓存 如果有定义codebase,则以codebase...如何让程序识别不同目录下dll? 我们看到,上面的顺序无论是否有名称签名看,都提到了一个名词 “私有目录”。...CurrentDomain_AssemblyResolve; 通过这个事件,我们可以在程序集解析,根据不同程序做不用处理,比如加载x86程序还是64位程序,当然也就可以指定程序目录了,

    1.9K30

    关于命名程序

    命名程序既可以进行私有部署,也可以进行全局部署。    5....其实不是这样,在命令行下查看,你会发现它实际上包含很多子目录,子目录名字和程序名称是相同,但它们都不是实际程序,实际程序位于程序名对应目录下。...1.0.0.0 程序程序,通过更改它配置文件,转而让程序去引用版本为 2.0.0.0 程序)来使用新版本;最后, GAC 还提供了不同版本程序并存( side-by-side...public.snk文件中,以对程序进行签名 跳过验证:sn -Vr assembly assembly在开发用机上进行跳过验证处理,该assembly不是已签名 签名:sn -r assembly...keyfile.snk assembly 进行签名,这一步是在发布之前做 取消跳过验证:sn -Vu assembly assembly在开发用机上取消跳过验证,该assembly这时是已签名

    64610

    使用C#编写ASP可调用DLL组件

    : 1)应用程序选项卡下,点击“程序信息(I)...”按钮,勾选“使程序COM可见(M)”,之后确定 2)签名选项卡下,勾选“为程序签名(A)”,之后在“选择名称密钥文件(K)”中,选择“新建”...关于设置名称这位置,有的会报错,提示没有权限,给Everyone权限就可以了 3)保存属性设置 5.生成项目,把生成dll使用regasm命令进行注册(C#写DLL属于托管代码,只能用RegAsm...进行注册,C++等写为非托管代码,使用regsvr32进行注册。...("LibTest.test") response.write(obj.print) %> 7.注意事项: 如果写程序是64位,那么在IIS7以上版本下,需要在应用程序池中设置为64位(默认就是)...---- 本文作者:老徐 本文链接:https://bigger.ee/archives/73.html 转载须注明出处及本声明

    2K20

    程序版本号,文件版本号及发布版本号管理

    程序版本号: 在.net框架中和CLR运行时钟引用,如使用程序命名就会使用....按照我理解,你所使用库如log4net,常见有2.0和4.0,那么你下载库是否是你工程中用库,就要看这个程序版本号....文件版本号: 专门显示在windows文件系统中,每次发布程序,如果是每天更新,应该只更新文件版本号,不要频繁更新程序版本号,防止其他引用的人每天要修改....程序编译前用当前内部版本号更新 AssemblyVersion 属性 build number 段,非程序文件(如资源等)在打包、备份、打标签统一使用内部版本号。...AssemblyVersion: 存储在AssemblyDef manifest metadata table中,CLR会使用这个版本号 工具支持: CSC.exe和AL.exe在每次

    2.2K10

    .NET Core跨平台奥秘:复用之殇

    包含在元数据中针对外部程序描述是由编译引用程序决定,引用程序名称(包含文件名、版本和签名公钥令牌)会直接体现在当前程序元数据中。...具体来说,如果引用是一个未签名程序(“Bar”),那么只要求被加载程序具有一致文件名和版本;如果引用是一个经过签名程序,那么还要求被加载程序具有一致公钥令牌。...Retargetable程序 在默认情况下,如果某个程序引用了另一个具有签名程序,CLR在执行时候总是会根据程序文件名、版本和公钥令牌去定位目标程序。...如下图所示,我们应用程序(App)引用了具有签名程序“Foobar, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a...作为类库发布者,我们希望使用到V1版本应用能够直接升级到V2版本,也就是升级应用不需要在引用新Lib.Core程序情况下源代码进行重新编译,而是直接部署V2版本两个程序(Lib.dll和

    1.3K80

    从数据到代码——通过代码生成机制实现类型编程

    我们首先需要做MessageCodeGenerator所在程序进行注册。一般地,进行注册程序具有一个名称,所以我们先程序进行签名。...这只需要对定义MessageCodeGenerator所在项目的“签名”选项进行如下设置就可以了。 ? 我们还需要对程序COM可见性进行相应设置。...RegAsm.exe完成,我们只需要启动通过VS 2010命名行工具,执行RegAsm.exe命令编译生成程序进行注册。...命令行程序进行注册,并采用/tlb开关生成类型库。...除了这种需要手工设置文件属性方式进行源文件和生成器之间匹配关系外,还具有另一种更为方便匹配方式:基于源文件扩展名匹配。

    1K70

    谈谈你最熟悉System.DateTime

    我们首先需要做MessageCodeGenerator所在程序进行注册。一般地,进行注册程序具有一个名称,所以我们先程序进行签名。...这只需要对定义MessageCodeGenerator所在项目的“签名”选项进行如下设置就可以了。 ? 我们还需要对程序COM可见性进行相应设置。...RegAsm.exe完成,我们只需要启动通过VS 2010命名行工具,执行RegAsm.exe命令编译生成程序进行注册。...命令行程序进行注册,并采用/tlb开关生成类型库。...除了这种需要手工设置文件属性方式进行源文件和生成器之间匹配关系外,还具有另一种更为方便匹配方式:基于源文件扩展名匹配。

    83960

    “前.NET Core时代”如何实现跨平台代码重用 ——程序重用

    为了让读者朋友们PCL实现机制具有充分认识,我们先来讨论一个被我称为“程序动态绑定”的话题。 目录 一、何谓程序动态绑定?...包含在元数据中针对外部程序描述是由编译引用程序决定[1],引用程序名称(包含文件名、版本、语言文化和签名公钥令牌)会直接体现在当前程序元数据中。...三、程序重定向 在默认情况下,如果某个程序引用了另一个具有签名程序,CLR在执行时候总是会根据程序有效名称(Assembly Qualified Name,由程序文件名、版本、语言文化和公钥令牌组成...:某个类型在框架1.0版本时候定义在程序A中,当升级到2.0时候被转移到了程序B中,使用旧版本应用可以在不做任何修改情况下直接使用框架进行升级。...,我们通过修改项目属性将目标程序名称设置成Lib和Lib2,Lib2具有针对Lib3项目引用。

    1.2K80
    领券