使用al.exe为程序集签名时,“模块名称”是什么?

14

我正在尝试按照此处的指南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文件时没有成功 - 我被告知数据库文件已损坏,可能无法使用

3个回答

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


2
在VS2010中,单击“项目属性” -> “签名”选项卡 -> 选择“对此程序集进行签名”。
提供或创建强名称密钥。

1

通过这个链接看看能否找到你需要的内容。如果没有,我可以帮你进一步研究。目前来说,我没有太多空闲时间,但在接下来的一个小时内可能会有所改变。

使用al /out命令使用强名称签署程序集


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接