我目前有一个 DotNetNuke 模块的项目设置。在这个项目中,我有一些用户控制文件,这些文件使用 ASP.NET 4.0 和 C# 使用 TFS 进行版本控制。
目前,该项目将构建并运行良好,没有任何问题。但是,我对项目中某些用户控件的前端 .ascx 文件所做的任何更改都会导致相应的 .ascx.designer.cs 生成 ~14 个错误,说明以下错误:
错误##“ControlClass”类型已经包含“SomeControlID”“ControlName.ascx.designer.cs 的位置”的定义
我之前没有对此进行任何其他更改,我认为这会导致此问题。它只是随机开始在我的项目中发生。
我尝试了以下方法:
- 删除 .ascx.designer.cs => 选择项目 => 'Convert to Web Application' 重新生成设计器文件。这总是会导致显示相同的错误。
- 重置 IIS。删除 ASP.NET 临时文件。手动清理解决方案并重建。这也重现了相同的错误。
- 从项目中删除用户控件。添加具有相同名称的新用户控件。建造。将代码复制到新控件的前后。然后重建。重现相同的错误。
为了让事情变得更奇怪,当我试图确定这是否可能是某种语法问题时,我做了以下事情并产生了这些结果:
- 撤消所有更改并恢复到 TFS 中的工作版本。
- 构建项目。没有错误一切都很好并且可以构建。
- 在前端 .ascx 文件的末尾添加一个空格。
- 构建项目。所有错误再次重现。
- 在确定什么都没做后,按 CTRL+Z 以确保它恢复正常。
- 重建项目。所有错误再次重现。
我不知道为什么,但是每次这个项目对一些选定的用户控件进行更改时,设计器文件都会突然生成这些错误。
这些用户控件包含复杂的控件,其中包含充满其他控件的模板等...但是在构建这些控件时,我没有遇到不同模板中的名称相同等问题。
我已经用完了想法,并且通过在线搜索此问题没有发现任何其他尝试。
有什么建议么??
编辑: 有人建议我手动删除额外生成的控件,以便构建项目。在更深入地研究这个之后,我有两个问题。
首先,这将允许项目构建,但每次更新 ASCX 时我都必须这样做,因为在我删除它们并进行另一次更改后,控制声明又回来了。
其次,虽然这将使项目能够毫无问题地构建。它不会运行,而是会引发以下运行时错误:
基类包含字段“btnDelete”,但其类型(System.Web.UI.WebControls.ImageButton)与控件类型(Telerik.Web.UI.RadButton)不兼容。
此错误向我表明,我为测试而删除的“btnDelete”控件在构建时被标记为“重复”错误,现在被标记为不正确的类型。
我认为这是因为用户控件上有多个不同类型的“btnDelete”按钮给了我错误。这些按钮包含在其编辑/删除模板的不同 RadGrid 控件中。