6

現在、DotNetNuke モジュールのプロジェクトをセットアップしています。このプロジェクトには、ASP.NET 4.0 と C# を使用して TFS でバージョン管理されたユーザー コントロール ファイルがいくつかあります。

現在、プロジェクトは問題なくビルドおよび実行されます。ただし、プロジェクト内の一部のユーザー コントロールのフロント エンド .ascx ファイルに変更を加えると、対応する .ascx.designer.cs で次のエラーを示す ~14 個のエラーが生成されます。

エラー ## タイプ 'ControlClass' には、'SomeControlID' 'Location of ControlName.ascx.designer.cs' の定義が既に含まれています

これまで、この問題を引き起こす可能性があると考えられる他の変更は行っていません。私のプロジェクトでランダムに発生し始めました。

私は次のことを試しました:

  • .ascx.designer.cs を削除 => プロジェクトを選択 => [Web アプリケーションに変換] を選択して、デザイナー ファイルを再生成します。これにより、常に同じエラーが表示されます。
  • IIS をリセットします。ASP.NET 一時ファイルを削除します。手動でソリューションをクリーンアップして再構築します。これも同じエラーを再現します。
  • プロジェクトからユーザー コントロールを削除します。同じ名前の新しいユーザー コントロールを追加します。建てる。コードを新しいコントロールの前面と背面にコピーします。その後、再構築します。同じエラーを再現します。

奇妙なことに、これがある種の構文の問題であるかどうかを判断しようとしたときに、次のことを行い、これらの結果を生成しました。

  1. すべての変更を元に戻し、TFS で作業中のバージョンに戻します。
  2. プロジェクトをビルドします。エラーはありません。すべて問題なくビルドされます。
  3. フロント エンドの .ascx ファイルの末尾にスペースを追加します。
  4. プロジェクトをビルドします。すべてのエラーが再び再現されました。
  5. 何もしなかったと判断したら、CTRL + Z を押して、正常に戻っていることを確認します。
  6. プロジェクトを再構築します。すべてのエラーが再び再現されました。

理由はわかりませんが、このプロジェクトでいくつかの選択したユーザー コントロールが変更されるたびに、デザイナー ファイルがこれらのエラーで突然生成されます。

これらのユーザー コントロールには、他のコントロールなどでいっぱいのテンプレートを含む複雑なコントロールが含まれています。ただし、これらを作成するときに、異なるテンプレートで名前が同じであるなどの問題はありませんでした。

私はアイデアを使い果たし、この問題をオンラインで検索しても他に試してみることができませんでした.

助言がありますか??

編集: プロジェクトがビルドされるように、余分に生成されたコントロールを手動で削除することをお勧めします。これをより深く調べた後、これには2つの問題があります。

まず、これによりプロジェクトをビルドできますが、ASCX を削除して別の変更を加えた後、コントロール宣言が戻ってくるため、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 iABC」ではなく「class ABC」に設定されていました。 .

混乱を修正したら、すべてがうまくいきました。

HTH

デイブ

于 2015-08-18T16:14:32.897 に答える
0

何かがコントロールの複製をデザイナー ファイルに追加しようとしているようです。VS は、編集を行うたびにデザイナー ファイルを更新します。これが、aspx または ascx ファイルを編集するとすぐに発生する理由です。できることの 1 つは、エラーがスローされたときに、designer.cs ファイルを開いて確認することです。重複した宣言が表示されることは間違いありません。この場合、使用しているライブラリのバグである可能性がありますが、詳細情報がなければ確実にはわかりません。重複を削除すると、再度ビルドできるようになります。それが再び起こらないようにする限り、デザイナー ファイルで何が生成されているかを確認する必要があります。

于 2013-08-29T20:59:05.383 に答える
0

私の場合、2 つの異なるクラスで同じ名前空間を 2 回使用していました。

名前空間とクラス名をもう一度確認してください。エラーの原因がクラス ファイルの重複ではないことを確認してください。

于 2013-11-25T08:03:15.460 に答える