在一个.NET Web应用程序项目中自定义控件

5
我有几个自定义控件,它们是作为服务器控件项目创建的。我需要进行一些更改,所以我只需将这些类添加到现有的Web应用程序项目中,这样我就可以把所有东西放在一个地方。这个Web应用程序项目被编译成一个dll,在多个Web项目中使用。
当我构建Web应用程序项目并将dll放置在不同网站的bin目录中时,当我尝试使用控件时,会出现以下错误:
未知的服务器标记“CustomControls: RadioButtonListForGrid”。
如果我将自定义控件类添加到我的网站的app_code文件夹中,它就可以正常工作。我使用对象浏览器确认了这些类在dll中存在。
我是否漏掉了什么明显的东西?我必须将这些保留为服务器控件项目并使用ILmerge组合dll吗?
编辑
事实证明,我需要添加程序集名称。而且事实证明,该程序集的名称并非我所认为的那样。糟糕,我应该检查一下。

那么程序集的名称是什么?命名模式是什么? - Matt
请查看我的评论,它在被接受的答案下方。 - ScottE
2个回答

4

你是否在web.config文件中添加了标签前缀?

<pages>
  <controls>
    <add tagPrefix="CustomControls" namespace="MyApp.CustomControls" ...

是的。也尝试在页面级别上进行操作。相同的web.config设置适用于app_code文件夹中的类,但不适用于编译在dll中的类。 - ScottE
请查看http://www.paraesthesia.com/archive/2007/08/02/generation-of-designer-file-failed-unknown-server-tag.aspx。 - Robert Harvey
@Robert Harvey - 我已经尝试过带有和不带有汇编的所有排列组合。 - ScottE
这很奇怪。这几乎听起来像是一个版本问题。我想重启IIS服务器也不是一个选项吧。 - Robert Harvey
不行,重启IIS也没用。我可以在代码中访问该命名空间,所以它是存在的... - ScottE
1
好吧,事实证明我很蠢。Web应用程序项目的程序集名称与<公司>。<产品>的公司部分不同。出于某种原因,我确实需要程序集名称,并且当然知道你的程序集名称是什么很重要。谢谢你的帮助,我会将你标记为正确答案! - ScottE

2
我可以确认,将程序集名称添加到Register指令中是有效的!因此,即使是同一个程序集,也必须这样做。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接