微软提供的IEWebControls安装包里的程序编译出来的Microsoft.Web.UI.WebControls.dll是没有强名称的。当我在用它的时候,由于它没有强名称,我不得不取消的应用程序的强名称。而我发现,微软提供的这个安装包安装以后的文件夹中是包含源程序的,而且,它就是在批处理里面通过CSC.exe命令编译成DLL文件的,那么我可以不可以用自己的KEY签名,使编译出来的DLL具有强名称呢?我详细的检查了它提供的源程序,在“C:\Program Files\IE Web Controls\src”(默认安装路径)下有一个“Version.cs”文件,它的全文如下:
/------------------------------------------------------------------------------
// Copyright (c) 2000-2003 Microsoft Corporation. All Rights Reserved.
//------------------------------------------------------------------------------
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Web.UI;
[assembly:AssemblyVersion("1.0.2.226")]
[assembly:AssemblyTitle("Microsoft IE WebControls")]
[assembly:AssemblyDescription("(Custom Build)")]
[assembly:AssemblyConfiguration("")]
[assembly:AssemblyCompany("Microsoft Corp.")]
[assembly:AssemblyProduct("Microsoft IE WebControls (Custom Build)")]
[assembly:AssemblyCopyright("Copyright (C) 2000-2003 Microsoft Corp. All rights reserved.")]
[assembly:AssemblyTrademark("")]
[assembly:AssemblyCulture("")]
[assembly:TagPrefixAttribute("Microsoft.Web.UI.WebControls", "iewc")]
哦,程序集的定义都在这里,我要是加上密钥的定义是否就可以生成带强名称的DLL呢?
于是,在这个文件的最后增加了下面定义:
[assembly: AssemblyKeyFile("c:\\mykey.snk")]
然后,重新运行批处理程序“builder.bat”重新编译DLL。经过确认,新生成的DLL就有了强名称了。