6

我目前有一个 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 临时文件。手动清理解决方案并重建。这也重现了相同的错误。
  • 从项目中删除用户控件。添加具有相同名称的新用户控件。建造。将代码复制到新控件的前后。然后重建。重现相同的错误。

为了让事情变得更奇怪,当我试图确定这是否可能是某种语法问题时,我做了以下事情并产生了这些结果:

  1. 撤消所有更改并恢复到 TFS 中的工作版本。
  2. 构建项目。没有错误一切都很好并且可以构建。
  3. 在前端 .ascx 文件的末尾添加一个空格。
  4. 构建项目。所有错误再次重现。
  5. 在确定什么都没做后,按 CTRL+Z 以确保它恢复正常。
  6. 重建项目。所有错误再次重现。

我不知道为什么,但是每次这个项目对一些选定的用户控件进行更改时,设计器文件都会突然生成这些错误。

这些用户控件包含复杂的控件,其中包含充满其他控件的模板等...但是在构建这些控件时,我没有遇到不同模板中的名称相同等问题。

我已经用完了想法,并且通过在线搜索此问题没有发现任何其他尝试。

有什么建议么??

编辑: 有人建议我手动删除额外生成的控件,以便构建项目。在更深入地研究这个之后,我有两个问题。

首先,这将允许项目构建,但每次更新 ASCX 时我都必须这样做,因为在我删除它们并进行另一次更改后,控制声明又回来了。

其次,虽然这将使项目能够毫无问题地构建。它不会运行,而是会引发以下运行时错误:

基类包含字段“btnDelete”,但其类型(System.Web.UI.WebControls.ImageButton)与控件类型(Telerik.Web.UI.RadButton)不兼容。

此错误向我表明,我为测试而删除的“btnDelete”控件在构建时被标记为“重复”错误,现在被标记为不正确的类型。

我认为这是因为用户控件上有多个不同类型的“btnDelete”按钮给了我错误。这些按钮包含在其编辑/删除模板的不同 RadGrid 控件中。

4

3 回答 3

1

想在我的案例中添加这个错误以及我是如何解决的。

发生在升级到 Visual Studio 2010 项目的旧项目中。在我的情况下,必须将 .aspx 文件转换为“Web 应用程序”以生成设计器文件。在这种情况下,不太确定具体发生了什么,但开始出现上述错误。开始查看变量,但在 (.cs)、aspx 页面或任何其他相关控件后面的代码中没有多次定义它。

我开始查看 aspx 页面标题,这就是我注意到可能存在的问题的时候。我有 2 个名称相似的文件... iABC.aspx (.cs,.designer) 和 ABC.aspx(.cs,.designer) 并且在 iABC.aspx 标头中,它继承了“ABC”...第一个符号有什么不对劲。我将其更改为正确的设置“iABC”,然后决定检查后面代码中的类名,瞧,iABC.aspx.cs 的类名被设置为“class ABC”而不是“class iABC” .

一旦我解决了这个烂摊子,一切都很好。

高温高压

戴夫

于 2015-08-18T16:14:32.897 回答
0

听起来有些东西正在尝试将控件的副本添加到设计器文件中。VS 会在您进行的每次编辑时更新设计器文件,这就是为什么它会在您编辑 aspx 或 ascx 文件时立即发生。你可以做的一件事是当错误被抛出时,打开你的 Designer.cs 文件并检查——我敢打赌你会看到重复的声明。如果是这种情况,它可能是您正在使用的任何库中的一个错误——尽管如果没有更多信息我无法确定。删除重复项,您应该能够再次构建。为了防止它再次发生,我们需要查看设计器文件中生成的内容。

于 2013-08-29T20:59:05.383 回答
0

就我而言,我在两个不同的类中使用了两次相同的命名空间。

再次验证我们的命名空间和类名 - 确保错误不是因为重复的类文件。

于 2013-11-25T08:03:15.460 回答