解决AjaxControlToolkit在GAC添加后,在“添加引用”和”选择工具箱“中不可见
2010-04-09 12:22 Capt.Liu 阅读(1984) 评论(1) 收藏 举报分享到:
之前看过张子阳老师《Asp.Net Ajax 的两种基本开发模式》,当中谈到可以将AjaxControlToolkit.DLL部署到GAC(全局程序集缓存),但是按照步骤操作,在“添加引用”或者“工具箱”并未出现AjaxControlToolkit。后来搜索一下,发现即使已将程序集安装到全局程序集缓存 (GAC) 中,“添加引用”对话框也不会自动显示每个程序集。因为“添加引用”对话框基于路径或还要求添加注册表项,该项指定要显示的程序集的位置。
同样在这篇文章http://www.cnblogs.com/ahjxxy/archive/2009/12/29/1635188.html,介绍了一种简便的方法,可以把你的DLL复制到.NET Framework目录(%WINDIR%\Microsoft.NET\Framework\v2.x.xxxx)中,这样的话.可以达到你的目的。但是,微软建议我们不应该将自己的assembly拷贝到Framework目录中。而是把它们放在一个单独的目录中,然后给Windows Registry添加一个key,告诉VS2008在哪里可以找到这些assembly。不过本文还是使用前面提到的简便方法。
如上图,当我们在VS2008中建立一个工程以后,默认都会引入很多System下的namespace,例如System.Data.Linq,它的引用路径就不是在.NET Framework目录(%WINDIR%\Microsoft.NET\Framework\v2.x.xxxx)中,而是在C:\Program Files \Reference Assemblies\Microsoft\Framework\v3.5中,所以我们可以在“VS2008命令提示符”使用
gacutil -i C:AjaxControlToolkit.dll
添加到GAC后,再将AjaxControlToolkit.DLL拷到C:\Program Files \Reference Assemblies\Microsoft\Framework\v3.5中。
经过如上操作的话,重启Visual Studio 2008,你会发现在“添加引用”或者“工具箱”中能找到AjaxControlToolkit。
此外我们再使用AjaxControlToolkit时会发现智能提示中没有注释,这个其实很好解决,下载了AjaxControlToolkit源代码后,打开工程,然后在工程右击“属性”,在“生成”选项卡的“输出”中勾选上XML文档文件(这个即为源代码注释),如下图(最下方):
然后我们将AjaxControlToolkit.xml文件拷入C:\Program Files \Reference Assemblies\Microsoft\Framework\v3.5(AjaxControlToolkit.DLL文件所在位置),之后我们就能在智能提示中看到注释(当然无论是“对象浏览器”还是在方法或类上右击“转到定义”也是可见的),如图:
当然如果我们将AjaxControlToolkit添加到GAC后,在项目正常使用的话,还需要再web.config文件中进行一些配置
<system.web>
<compilation debug="false">
<assemblies>
<add assembly="AjaxControlToolkit, Version=3.0.30930.28736, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
<!- 其余略 -->
</compilation>
</system.web>
如图:
其中Version,PublicKeyToken等属性值,我们可以打开C:\WINDOWS\assembly目录找到AjaxControlToolkit进行查看,或者打开“VS2008命令提示符”输入如下命令进行查看:
gacutil -l C:AjaxControlToolkit.dll
此外当我们安装完成后,使用这些控件时,当你向页面拖放一个控件,控件默认的前缀是 cc1,这样可能会显得不够美观,想解决这个问题,我们依然可以在web.config里面进行配置:
<system.web>
<pages>
<controls>
<add assembly="AjaxControlToolkit, Version=3.0.30930.28736, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"
namespace="AjaxControlToolkit" tagPrefix="ajaxControlToolkit" />
<!-- 其余略 -->
</controls>
</pages>
<system.web>
非常感谢您的阅读,本人水平一般般,如有什么错误地方,非常欢迎批评指正,哈哈
参考文章:张子阳老师《Asp.Net Ajax 的两种基本开发模式》,http://www.cnblogs.com/jimmyzhang
浙公网安备 33010602011771号