2010-12-07 86 views
13

我想从这里的指导下签署强名称的程序集:http://msdn.microsoft.com/en-us/library/xc31ft41.aspx使用al.exe签名具有强名称的程序集时,“模块名称”是什么?

关键的指令是:

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

它说

module name is the name of the code module used to create the assembly

我不不明白这是什么意思。在字面意义上,我将把上述解释为csc.exe的一些组件(即它创建了程序集),但显然这在这种情况下是无意义的。因此,首先这是指什么,其次(为了帮助我的元学习)如何去推理它是什么?考虑到文档的简洁性,我认为它应该是显而易见的或直观的,但我现在不了解它。

我试图指定一些随机的名称(如blah.blah),但得到这个错误:

ALINK:错误AL1047:错误导入文件 “C:\路径\到\凸出\ BIN \调试\等等。 blah' - 系统找不到 指定的文件。

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

回答

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

看看你是否能通过此链接找到你要找的东西。如果没有,我可能会帮助进一步研究。就目前而言,我没有太多的空闲时间,但在接下来的一小时内可能会有所改变。

Sign assembly with strong name using al /out command

1

在VS2010中,点击Project Properties - > Signing Tab - > Check Sign this assembly。

提供或创建强名称密钥。

相关问题