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

fos*_*ndy 14 c# assembly-signing

我试图通过以下指南来签署一个强名称的程序集:http://msdn.microsoft.com/en-us/library/xc31ft41.aspx

关键指令是:

al /out:<assembly name> <module name> /keyfile:<file name>
Run Code Online (Sandbox Code Playgroud)

它说

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

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

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

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

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

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

les*_*ode 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
Run Code Online (Sandbox Code Playgroud)

有关CLR如何处理模块,清单和程序集的最佳方法,请参阅Richter.