【问题标题】:Inherited web server control can't find reference to parent assembly?继承的 Web 服务器控件找不到对父程序集的引用?
【发布时间】:2012-12-19 02:48:49
【问题描述】:

我在 Visual Studio 2012/.NET 4.5 中使用 ASP.Net,情况如下:

我有一个从 WebControl 继承的名为 CDASPControl 的抽象类的程序集,它包含各种帮助方法以及其他从它继承的控件。

我有一个名为 CDASPGrid 的程序集,它继承自上述控件。

当我将 CDASPGrid 放到我的网页中时,它添加了控件就好了,并且添加了注册页面指令没有问题:

<%@ Register Assembly="CDASPGrid, Version=0.0.0.0, Culture=neutral, PublicKeyToken=" Namespace="Controls" TagPrefix="cdc" %>

<cdc:CDASPGrid ID="CDASPGrid1" runat="server" />

当我去编译我的应用程序时,我收到以下错误:

类型“Controls.CDASPControl”在未引用的程序集中定义。您必须添加对程序集 'CDASPControl, Version=0.0.0.0, Culture=neutral, PublicKeyToken=' 的引用。

在引用中,CDASPGrid 引用存在,但 CDASPControl 引用不存在。

当我手动将 CDASPControl 引用添加到网站时(如果这有什么不同,它是一个 Web 项目),它编译并运行得很好。

有没有办法让网站自动获取额外的引用而无需手动添加?

我注意到第 3 方控件会执行此操作,例如 DevXPress ASP Gridview 控件将根据需要添加对 web.config 的任何必要引用。有人能指出我正确的方向,以便我可以学习如何完成此任务吗?

谢谢。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    所以,事实证明,我不得不手动处理这个问题。使用 EnvDTE 程序集,我能够在设计时通过控件设计器获取项目引用,并将缺少的引用添加到项目引用中。此外,我还能够修改 web.config 以通过控件设计器将程序集添加到程序集列表中。

    不是一个理想的解决方案,但效果很好。

    这是让我走上这条道路的文章: How to register automatically HTTP handler required by a Web server control

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 1970-01-01
      相关资源
      最近更新 更多