如果我们有一个使用.NET库的.NET可执行文件,CLR如何确保您使用的是正确版本的dll? CLRwise什么被认为是“正确的dll版本”,首先?CLR如何知道给定的程序集是否是正确的?
只看版本吗?看看构建时间(?)。也许它看起来在一个哈希或什么?
感谢
如果我们有一个使用.NET库的.NET可执行文件,CLR如何确保您使用的是正确版本的dll? CLRwise什么被认为是“正确的dll版本”,首先?CLR如何知道给定的程序集是否是正确的?
只看版本吗?看看构建时间(?)。也许它看起来在一个哈希或什么?
感谢
就可以开始学习.NET版本,
http://msdn.microsoft.com/en-us/library/51ket42z(VS.71).aspx
它采用一个编译过程中使用,通过完全合格的名称标识 - 这不仅包括程序集的名称,而且还完整的版本信息和数字签名的指纹,如果一个是可用的。
其他的答案已经覆盖了它的本质。
基本上,框架检查程序集的名称,版本和签名以找到匹配项。
您可以从代码(AssemblyVersion属性)中设置的名称和版本(以及更多内容!),并且您也可以在VS的帮助下轻松对其进行签名。
签名涉及创建.pfx文件(VS会为您生成一个文件),并在构建设置中检查“sign assembly”。这将确保多个程序集可以共存同一名称和版本。
(所以如果两家公司偶然创造了两个同名的东西,你仍然可以一起使用它们。)
你能解释一下数字签名的东西吗?如何以及何时完成?另外,假设我创建了一个Hello World应用程序并构建了它10次。如果我不更改其代码,输出.exe会有什么不同?版本会改变吗? – 2010-05-09 09:48:12
阅读.NET的任何介绍 - “代码签名”是您想要的主题。如果oyu需要基础知识,没有什么比阅读文档更好。 – TomTom 2010-05-09 11:01:25