仅在发布上找不到类型或命名空间

时间:2012-01-26 17:56:56

标签: asp.net visual-studio user-controls

我有一个使用Visual Studio 2010和ASP.Net 4.0的Web解决方案。在此解决方案中,有一个网站和一个类库。

我在网站上添加了一个新的用户控件,并且能够构建所有内容。我甚至能够使用新控件发布。当我尝试在代码的不同部分引用该控件的类名时出现问题。当我这样做时,我仍然能够构建/重建整个解决方案。但是当我尝试发布时,我收到错误“无法找到类型或命名空间名称。”

当我们发布时,我们总是取消选中“允许此预编译站点可更新”框,并且我们始终选中“使用固定命名和单页程序集”框。

如果我发布并取消选中“使用固定命名和单页程序集”框,它将发布就好了。但由于某种原因,我不能让它用CHECKED那个盒子发布,这是我需要做的。

我试过了:

清洁解决方案

重新启动Visual Studio

重新启动计算机

清除.net临时文件夹

重新创建控件

将网站中的所有内容放入命名空间

非常感谢任何帮助或见解。

感谢。

编辑:

我明白了。我是动态添加这个新控件。但我没有意识到它也需要在我正在使用它的页面上注册。注册控件后,一切都按预期工作

3 个答案:

答案 0 :(得分:1)

当您想要动态使用Web用户控件时,当您使用其他.net控件(如文本框,标签等)时,您需要按照以下步骤操作。

(1)在控制指令中添加ClassName属性,如下所示(在ascx文件中)

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="CustomControl.ascx.cs"
Inherits="CustomControl" ClassName="CustomControl" %>

注意:确保ClassName&amp; Inherits和CS文件中的类名相同。

(2)在您要动态使用Web用户控件的页面上添加Reference指令

<%@ Reference Control="~/usercontrol/CustomControl.ascx" %>

注意: Reference指令与Register指令不同。

(3)现在,您可以在页面的任何位置动态添加用户控件,如下所示

ASP.CustomControl cuCtrl = (ASP.CustomControl)LoadControl("~/usercontrol/CustomControl.ascx");
//add dynamically created custom control to an existing panel or any container control on your page
pnlDemo.Controls.Add(cuCtrl);

注意:您始终可以在ASP中添加using命名空间;)

在此之后,即使检查Allow this precomplied site to be updatable选项,您也不应该遇到任何问题。

答案 1 :(得分:0)

我明白了。我是动态添加这个新控件。但我没有意识到它也需要在我正在使用它的页面上注册。注册控件后,一切都按预期工作。

答案 2 :(得分:0)

我尝试了这个并且在发布时仍然遇到同样的问题,无论是使用引用标记还是注册标记它都不会发布。现在唯一的工作方式是取消选中“可更新站点”