其他CS文件无法访问用户控件

时间:2010-12-13 07:50:24

标签: asp.net user-controls namespaces

当我加入一个项目时,已经开发了UserControlA。它在项目中,我将调用MyProjectWeb,它的名称空间为MyProjectWeb.Common

namespace MyProjectWeb.Common
{
    public partial class UserControlA : System.Web.UI.UserControl
    {

...

还有另一个WorkFlowManager项目,它包含一个访问此UserControl1的类文件。

MyProjectWeb.Common.UserControlA myUserControlA = (MyProjectWeb.Common.UserControlA)WizardControl.FindControl("TabContainer5$tpSomething$UserControlID");

注意:WorkFlowManager和MyProjectWeb属于同一解决方案。

这完全没问题。现在我想创建另一个UserControl,即UserControlB。

我跟着完全一样的事情。

namespace MyProjectWeb.Common
{
    public partial class UserControlB : System.Web.UI.UserControl
    {

但令我惊讶的是,我无法在WorkFlowManager中的同一代码文件中创建UserControlB的实例。 MyProjectWeb.Common命名空间甚至不包含UserControlB。当我编译时,我明显得到了一个 The type or namespace name 'UserControlB' does not exist in the namespace 'MyProjectWeb.Common' (are you missing an assembly reference?)

为什么我可以引用UserControlA而不是UserControlB,它们位于WorkFlowManager cs文件的同一命名空间中?如果我在MyProjectWeb内的任何地方访问MyProjectWeb.Common命名空间,我可以看到两个用户控件。在哪里寻找错误?

我正在使用Visual Studio 2005和ASP .NET 2.0

2 个答案:

答案 0 :(得分:1)

我必须看看项目才能确定,上面你说的内容并没有告诉我足够的。

快速创意:

  • 确保UserControlB.cs实际上在正确的项目中。
  • 确保将UserControlB.cs标记为构建类型的“编译”。
  • 确保UserControlB实际上是“B”而不是“A”,因为它们是部分的,拼写错误可能会导致它们组合在一起。
  • 那些用户控件是“部分”你是否也复制了另一部分?
  • 确保Web项目没有任何错误,项目可能没有正确构建,而您所获得的错误是因为过时的程序集。
  • 清洁+重建。手动删除bin和obj目录。

答案 1 :(得分:1)

这将取决于 WorkFlowManager 项目如何引用 MyProjectWeb dll。如果两个项目都在同一个解决方案中,那么它应该是项目参考,但您需要对其进行验证。如果引用了dll文件,那么你需要查看存储引用文件的确切位置 - 我的猜测是 WorkFlowManager 项目引用了 MyProjectWeb dll的私有副本显然,在重建MyProjectWeb时不会更新。