我在Visual Studio 2012 / .NET 4.5中使用ASP.Net,情况如下:
我有一个带有抽象类的程序集,该抽象类继承自名为CDASPControl的WebControl,它包含各种辅助方法,以及从其继承的其他控件。
我有一个名为CDASPGrid的程序集,它继承了上述控件。
当我将CDASPGrid放入我的网页时,它添加了控件就好了,添加了寄存器页面指令没有问题:
<%@ Register Assembly="CDASPGrid, Version=0.0.0.0, Culture=neutral, PublicKeyToken=" Namespace="Controls" TagPrefix="cdc" %>
<cdc:CDASPGrid ID="CDASPGrid1" runat="server" />
当我去编译我的应用程序时,我收到以下错误:
type'Controls.CDASPControl'在未引用的程序集中定义。您必须添加对程序集'CDASPControl,Version = 0.0.0.0,Culture = neutral,PublicKeyToken ='的引用。
在引用中,CDASPGrid引用存在,但CDASPControl引用不是。
当我手动将CDASPControl引用添加到网站时(如果这有任何不同,它是一个Web项目),它编译并运行就好了。
是否有网站自动获取额外的参考资料而无需手动添加?
我注意到第三方控件执行此操作,例如DevXPress ASP Gridview控件将根据需要添加对web.config的任何必要引用。有人能够指出我正确的方向,以便我可以学习如何实现这一目标吗?
感谢。
答案 0 :(得分:0)
所以,事实证明,我必须手动处理这个问题。使用EnvDTE程序集,我能够通过控件设计器在设计时获取项目引用,并将缺少的引用添加到项目引用中。此外,我还可以修改web.config以通过控件设计器将程序集添加到程序集列表中。
不是理想的解决方案,但效果很好。
以下是让我走上正轨的文章: How to register automatically HTTP handler required by a Web server control