一个经过强命名的程序集是无法被篡改的。比如微软的System.dll这些程序集都是经过强命名的,我们只能够引用它,无法修改它。
如果平时不考虑版权问题我们可能很少会用到这个东西。我用一个简单的DEMO演示下强命名的作用.
1、新建一解决方案:VesionTest
2、新建一个控制台应用程序项目:VesionTest
3、新建一个类库项目:Information
VesionTest引用Information类库
最后程序发布后我们可以在文件夹里找到这几个文件:Information.dll,VesionTest.exe
我现在对Information这个项目进行强命名,强命名的方法其实很简单,就是生成密钥对来进行数字签名。操作非常简答,如果要具体的可以参考这位仁兄写的
如果我不进行强命名会有什么后果呢?如果有人想篡改我的Information程序集,如果我不对Information这个项目进行强命名,那么别人就可以写一个命名和我一样的Information的项目,最后发布一个Information.dll出来,然后替换我原来的版本,最后VesionTest引用到他写的版本去了,这。。。这不就乱套了吗。
我试过了,我自己新建另外一个Information的类库,去替换经过强命名的dll,在执行exe文件时会有相关的错误提示,如果我把强命名去掉,篡改后的dll是可以被调用的。
版权保护在某些应用场合还是非常重要的,不可忽视。