我正在尝试通过遵循此处的指南来签署具有强名称的程序集: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
。
答案 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)
通过此链接查看您是否可以找到所需内容。如果没有,我可能会帮助进一步研究。至于现在,我没有太多的业余时间,但这可能会在下一个小时内发生变化。