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

时间:2010-12-07 02:38:12

标签: c# assembly-signing

我正在尝试通过遵循此处的指南来签署具有强名称的程序集:http://msdn.microsoft.com/en-us/library/xc31ft41.aspx

关键指令是:

al /out:<assembly name> <module name> /keyfile:<file name>

它说

  

模块名称是用于创建程序集的代码模块的名称

我不明白这意味着什么。从字面意义上讲,我会将上面的内容解释为csc.exe的某些组件(即,它创建了程序集)但显然这在此上下文中是无意义的。

首先,这是指什么,其次(为了帮助我的元学习)如何去推理它是什么?考虑到文档的简洁性,我得到的印象是它对我来说应该是显而易见或直观的,但目前却不是。

我尝试指定一些随机名称(例如blah.blah)但得到此错误:

ALINK:错误AL1047:导入文件时出错         'c:\ path \ to \ proj \ bin \ Debug \ blah.blah' - 系统无法找到         指定的文件。

编辑:进一步阅读后,我得到的印象是模块名称是代码的名称,但我没有任何运气指定.cs文件 - 我被告知Database file is corrupt and may not be usable

3 个答案:

答案 0 :(得分:6)

程序集由模块(.netmodule文件)组成,这些模块是通过编译源(.cs文件)生成的。程序集链接器负责将模块打包到程序集中。所以如果你有两个源文件class1.cs和class2.cs:

csc /t:module class1.cs
csc /t:module class2.cs
al /out:assembly.dll /t:library class1.netmodule class2.netmodule

为了最好地处理CLR如何处理模块,清单和程序集,请参阅Richter

答案 1 :(得分:2)

在VS2010中,单击Project Properties - &gt;签名标签 - &gt;选中签署此程序集。

提供或创建强名称密钥。

答案 2 :(得分:1)

通过此链接查看您是否可以找到所需内容。如果没有,我可能会帮助进一步研究。至于现在,我没有太多的业余时间,但这可能会在下一个小时内发生变化。

Sign assembly with strong name using al /out command

相关问题