414

ページまたはコントロールを編集しているときに、.designer ファイルが、ページに追加した新しいコントロールで更新されなくなることがあります。何が原因なのかはわかりませんが、Visual Studio に .designer ファイルを強制的に再生成させる方法があるかどうか疑問に思っています。Visual Studio 2008 を使用しています

編集:申し訳ありませんが、私はすでに試したことに注意する必要がありました:

  • すべてのファイルと Visual Studio を閉じて再度開く
  • ページの runat="server" コントロールに変更を加える
  • page ディレクティブの削除と再追加
4

48 に答える 48

380

.aspx ファイルを開き、デザイン ビューと html ビューを切り替えて元に戻すと、VS はコントロールをチェックし、足りないものをデザイナー ファイルに追加するように求められます。

VS2013-15 では、[プロジェクト] メニューの下に [Web アプリケーションに変換] コマンドがあります。VS2013 より前は、このオプションは as(c/p)x ファイルの右クリック コンテキスト メニューで使用できました。これが完了すると、*.Designer.cs ファイルが使用可能になり、Design HTML 内のコントロールがコントロールで使用できるようになります。

PS: デバッグ時にすべてが「再コンパイル」されるわけではないため、これはデバッグ モードでは実行しないでください。

一部の人々は、(.designer.cs ファイルのバックアップ コピーを作成してから) .designer.cs ファイルを削除することで成功したと報告しています。同じ名前の空のファイルを再作成します。

この回答には、designer.cs ファイルを再作成する最善の方法に関するヒントを追加する多くのコメントがあります。

于 2008-09-05T06:25:29.457 に答える
98

うまくいく解決策を見つけましたが、あまり好きではありません。.designer.cs ファイルを削除してから、同じ名前の空のファイルを再作成する必要がありました。戻って aspx ファイルを再度保存すると、デザイナー ファイルが再生成されました。

ドッジー!

于 2008-09-05T06:32:13.403 に答える
81

毎回機能する次の方法を使用します。

  • aspx/ascx ファイルのエディターで、すべてのコード イン フロント(html マークアップなど) を選択します。
  • 切る。
  • 保存。
  • ペースト。
  • 保存。

再コンパイルします。

于 2009-01-29T16:19:44.007 に答える
65

私は最近、同じ問題を抱えていることに気付きました。Visual Studio 2010 はデザイナー ファイルの更新を拒否していました。

結局のところ、VS は、CodeBehind (DLL) の代わりに CodeFile (ページの実行) を使用するページのデザイナー ファイルを変更しません。これは、VS を閉じたり、プロジェクトをリロードしたり、コントロールを再作成したり、ファイルを変更したりする回数に関係なく当てはまります。VS にデザイナーの再生成を促すものは何もありません。CodeFile ページのデザイナ ファイルを作成しないかのようですが、そこにある必要があります。

CodeBehind に変更して、ページを保存しました。デザイナー ファイルがすぐに更新されました。それから私はそれを元に戻しましたが、すべてがまだ金色でした. VS 2008 はデフォルトでこれに悩まされていなかったため、この動作は VS 2010 / .NET 4.0 では新しいようです。

それはこの部分です:

<%@ Page Language="vb" AutoEventWireup="false" CodeFile="YourPage.aspx.vb" Inherits="YourPageClass" %>

CodeFile を CodeBehind に変更し、保存してから元に戻します。

于 2011-01-22T20:18:08.470 に答える
38

別の可能性があります。.aspx ファイルにエラーがあり、Visual Studio がデザイナーを再生成できない可能性があります。

デザイン ビューに切り替えると、コントロールがレンダリングできないことが表示されます。コントロールを修正し (私の場合は、プロパティの余分な引用符でした)、再コンパイルすると、デザイナーが再生成されます。

于 2008-10-06T22:05:54.437 に答える
15

私が知っている唯一の方法は、デザイナー ファイルを削除し、Web アプリに変換することです。ただし、これを行うと、通常、最初に自動再生成されなかった理由について、エラーがポップアップ表示されます。通常は、ページの先頭で宣言されていないコントロール参照です。

于 2008-09-09T14:28:10.697 に答える
9

Web アプリケーションに変換してもうまくいきませんでした。

designer.cs を削除して空白の designer.cs を貼り付けても機能しませんでした。

しかし、はい、これはうまくいきました:

  1. すべて選択(Default.aspx)
  2. 切る
  3. Default.aspx を保存
  4. ペースト
  5. Default.aspx を保存

終わり。新しい designer.cs が生成されました。:)

于 2014-02-14T09:23:04.557 に答える
6

コピー/貼り付けがこの動作を引き起こしていることによく気づきました。ほとんどの場合、サーバーコントロールのIDを編集することで解決できます(文字を追加してから削除するだけです)。

また、リピーターなどの内部のコントロールはデザイナーファイルに表示されないことにも注意してください。

はい、上記のファイル削除の魔法を実行する必要がある場合がありますが、名前変更ソリューションはほとんどの場合機能します。

于 2009-05-11T02:57:54.107 に答える
5

コードを変更したり、「Web アプリケーションに変換」などのコマンドを実行したりせずに、この問題を解決する方法を見つけました。これも簡単です。

私が見つけたのは、Visual Studio を再起動すると問題が解決することが多いが、そうでない場合もあるということです。そのような場合、Visual Studio を閉じてから、Web プロジェクトの「obj」ディレクトリ内のすべてのコンテンツを削除してから再度開くと、常にうまくいきました。

(もう一度開始するときは、スペースを追加してもう一度削除し、保存をクリックして、デザイナー ファイルを適切に再生成します)

于 2013-02-01T09:21:42.757 に答える
5

私の経験では、上記のように、この記事のようにしたい場合.

マークアップ ファイル (aspx/ascx) に CodeBehind="MyPage.aspx.cs" 属性を含めないと機能しません。私はそれについてここにブログを書きました。

于 2009-03-26T20:08:42.160 に答える
4

デザイン ビューで画面を右クリックし、[更新] をクリックします。

于 2010-09-14T06:08:43.740 に答える
4

(以下は VS2005 での経験から得たものです。)

デバッグ中に ASPX ページを編集すると、分離コードは新しいクラスで更新されません。したがって、デバッグを停止し、ASPX ページを簡単に編集して (ボタンなどを追加するなど)、[デザイン ビュー] をクリックして、ボタンを削除する必要があります。次に、デザイナー ファイルを更新する必要があります。

VS2008 で別の問題が発生している場合は、お手伝いできません。

于 2008-09-05T06:26:24.790 に答える
4

うまくいったもう一つのことは -

  1. 手動で削除してから、ファイルシステムにデザイナー ファイルを作成します。
  2. プロジェクトファイルを編集します。
  3. デザイナーを含めるコードを追加します
    。例:<Compile Include="<Path>\FileName.ascx.designer.cs"> <DependentUpon>FileName.ascx</DependentUpon> </Compile>
  4. プロジェクトのリロード
  5. デザイン/ビュー モードで (c/p)x ファイルとして開き、保存します。
  6. デザイナ ファイルをチェックします。コードはそこにあります。
于 2013-11-12T05:17:36.770 に答える
3

VS2013 以降を使用している場合は、コードが「CodeFile」ではなく「CodeBehind」属性で参照されていることを確認してから、以下の手順を実行します。

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="yourControl.ascx.cs" Inherits="yourControl.yourControl" %>
  • 空のデザイナー ページを作成します (または、"yourControl.ascx.designer.cs" が既に存在する場合はクリアします)。
  • ascx (または aspx) ですべてのコードをコピーし、削除してから保存します。もう一度貼り付けて保存します。
  • デザイナー ファイルが読み込まれます。
于 2015-02-11T18:56:30.587 に答える
2

Visual Studio 2008で作業しているときに、同じ問題に何年も遭遇しました。そして、皆さんが持っていると確信しているように、StackOverflowと数十のブログですべての「ソリューション」を試しました。そして、あなた方全員が遭遇したと私が確信しているように、時には彼らは働くこともあれば、そうでないこともあります。そして、どうやらそれはまだVS2010とVS2012の問題です。

それで、ついに、数か月前に、私は十分であると判断し、数週間にわたって、.designerファイルを生成する「Redesigner」と呼ばれるツールを作成しました。これはBSDライセンスの下でオープンソースであり、SourceForgeでソースコードを入手できます—自由に使用でき、自由に盗み、自由に好きなことをすることができます。また、Visual Studioが頻繁に実行できないこと、つまり.designerファイルを迅速かつ確実に生成します。

これは、.aspxファイルと.ascxファイルを解析し、必要なすべてのリフレクションマジックを実行し、正しい.designerファイルを吐き出すスタンドアロンのコマンドラインツールです。既存のコードに依存することを避けるために、すべての解析とリフレクション自体を実行します。.NET 3.5に対してC#で記述されていますが、型宣言以外の目的でSystem.Webを使用しないようにするのは面倒であり、VisualStudioをまったく使用または依存していません

Redesignerは新しい.designerファイルを生成できます。また、-verboseオプションを提供しているため、問題が発生した場合に、「System.Exceptionタイプの例外がスローされました」よりもはるかに優れたエラーメッセージが表示されます。また、既存の.designerファイルが壊れている場合に通知するために使用できる--verifyオプションがあります。コントロールがない、プロパティ宣言が正しくない、Visual Studioで読み取れない、または単に中断されているだけです。

先月の大部分は、職場でジャムから抜け出すために使用してきました。Redesignerはまだベータ版ですが、十分に進んでいるので、その存在を一般の人々と共有する価値があります。間もなく、そのためのVisual Studioプラグインを作成する予定です。これにより、右クリックするだけで、いつもの方法でデザイナーファイルを確認または再生成できます。しかし、当面の間、コマンドラインの使用法は非常に簡単で、多くの頭痛の種を減らすことができます。

とにかく、今すぐRedesignerのコピーをダウンロードして、髪の毛を抜くのをやめてください。あなたはいつもそれを必要とするわけではありません、しかしあなたがそうするとき、あなたはあなたがそれを持っていることをうれしく思います!

https://sourceforge.net/projects/redesigner/

于 2013-01-21T06:23:37.473 に答える
2

これが私が経験したことです。ソリューション エクスプローラーで Web サイト フォルダーを選択し、右クリックして、デザイナー ファイルが生成されるすべての aspx ファイルに対して [Web アプリケーションに変換] を選択します。

サミール

于 2010-01-15T19:30:20.943 に答える
2

Visual Studio 内:

1) aspx.designer.cs ファイルを削除します

2) aspx ファイルを右クリックし、[Web アプリケーションに変換] を選択します。これにより、aspx.designer.cs が最新の状態に戻ります。

次のようなエラーが表示された場合:

「デザイナー ファイルの生成に失敗しました: メソッドまたは操作が実装されていません。」

Visual Studio を閉じてから、プロジェクトを再度開いて、手順 2 をもう一度実行してみてください

Visual Studioでaspx.designer.csを生成するには?

于 2015-04-17T06:43:55.110 に答える
2
  • デザイナー ファイルですべてを選択し、ファイル内のすべてを削除し、空白のままにしてから保存します。
  • ASPX/ASCX ファイルですべてを選択し、すべてを切り取り、再度貼り付けます
  • デザイナー ファイルはコードを再生成する必要があります。
于 2008-10-06T22:09:16.130 に答える
2

ここで回答の長いリストに追加するだけです-VS2010(SP1)で.aspxファイルを使用してこの問題に遭遇しました。標準の ASP コントロール (これは過去に機能していました) を追加および削除しようとしましたが、最終的に、既存のコントロールからrunat=server 行の 1 つを削除(および保存) して、デザイナー ファイルを強制的に再生成する必要がありました。

于 2012-06-28T13:44:13.757 に答える
2

ソリューション エクスプローラーで右クリックし、[Web アプリケーションに変換] を選択します。すべてのデザイナー ファイルが再度生成されます。

于 2016-03-17T20:48:28.453 に答える
2

TL;DR; ASPX ページのディレクティブ
の属性を編集し、[保存] をクリックします。デザイナー ファイルを再生成する必要があります。Inherits@Page

Inherits= <namespace>.<class_name> およびCodeBehind= <class_name>.aspx.csであることを確認します。


VS 2010 と TFS を使用して、Sharepoint 2010 プロジェクトでこれを実行しようとしましたが、上記の解決策はどれもうまくいきませんでした。主に、 VS 2010 で TFS を使用している場合、.ASPX ファイルの右クリック メニューに [ Web アプリケーションに変換] オプションがありません。

この回答は最終的に役立ちました。私のクラスは次のようになりました:

namespace MyProjects.Finance.Pages
{
    public partial class FinanceSubmission : WebPartPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }

        // more code
    }
}

そして、私の@Page指示は(わかりやすくするためにここに改行があります):

<%@ Page Language="C#" AutoEventWireup="true" 
    CodeBehind="FinanceSubmission.aspx.cs"
    Inherits="MyProjects.Finance.Pages.FinanceSubmission"
    MasterPageFile="~masterurl/default.master" %>

最初にInheritsMyProjects.Finance.Pagesに変更し、[保存] をクリックしてから、 MyProjects.Finance.Pages.FinanceSubmissionに戻して、もう一度 [保存] をクリックします。そしてワラ!デザイナーページをリニューアルしました!

これがTFSを使用している人に役立つことを願っています!

于 2014-12-19T14:58:47.043 に答える
1

これはIDEのバグです。私はVS2003以来それを見てきました。しかし、解決策は単純です。

ファイルを保存します。IDEを完全に終了します(プロセスが停止していることを確認してください、タスクマネージャー)。

ソリューションを再度開き、マークアップをダーティにして保存します。修理済み。

于 2010-04-30T06:25:09.047 に答える
1

.ascxファイルで宣言したときに、新しいコントロールがデザイナーファイルに生成されないという問題がありました。問題は、私が背後のコードでもそれらを宣言したことでした。したがって、コードビハインドの宣言を削除することで問題が解決しました。

于 2011-07-19T10:51:21.780 に答える
1

Designer.csファイルを削除し、.aspxファイルを右クリックして、[Webアプリケーションに変換]を選択します。タグが整形式でないなど、コントロール宣言に問題がある場合は、エラーメッセージが表示され、Visual Studioがデザイナーファイルを正常に再生成する前に、不正な形式のタグを修正する必要があります。

私の場合、この時点で、runat="server"属性を持つフォームタグ内にないボタンコントロールを宣言したことが問題であることがわかりました。

于 2009-02-10T19:37:53.860 に答える
1

2つの問題がありました...古いAJAXControlkit-古いdllを削除し、ツールボックスから古いコントロールを削除し、新しいバージョンをダウンロードし、ツールボックスをロードし、ページに新しいコントロールをドラッグアンドドロップしました(http://www.experts-exchange.comを参照) /Programming/Languages/.NET/Visual_Studio_.NET_2005/Q_24591597.html

また、ラベルコントロールにスペルミスがありました(「cssclass」の代わりに「class」を使用していました)。

Ta

于 2010-07-08T04:55:37.040 に答える
1

あなたが私のようで、古い .ASPX ファイルを新しいプロジェクトに追加するとします。おそらく、ページで使用されているコントロールのいくつかを忘れるでしょう。

その場合、最初に、インストールするファイルが複数ある場合。最初に 1 つずつ修正します。

コンパイル時に、生成されたエラーを修正します。おそらく、すべてのファイルで同じエラーになります。

次に、デザイナー ファイルがある場合は、挿入されたすべてのデザイナー ファイルを削除します。次に、デザイナー ファイル以外にコンパイル時にエラーがないことを確認します。

最後に、Web プロジェクトを右クリックし、[Web アプリケーションに変換] をクリックします。これにより、必要なデザイナー ファイルが挿入されます。

これらは、問題を解決するための絶対的な最善の手順です.

于 2011-06-02T02:46:25.170 に答える
1

これは、名前空間を更新し、デザイナー ファイルで名前空間を更新しない場合にも発生する可能性があります。修正: デザイナー ファイルの名前空間も更新します。

于 2012-07-13T08:51:40.960 に答える
1

誰も言及していないことの 1 つは、ページにアクセスすることです。(さまざまな理由で) 存在しないユーザー コントロールを含めていたため、デザイナー ファイルの再生成を停止しましたが、ここで提案されていることはどれも機能しませんでした。なんらかの理由で、Visual Studio でエラーは発生しませんでした。もちろん、再生成されていないためにクライアント側のコントロールが存在しなかったという事実について不平を言うものを除いて.

実際にページにアクセスして、ASP.Net にエラーを通知してもらう必要がありました。

于 2012-05-17T23:11:29.787 に答える
1

私のために働いた解決策は次のとおりです。

ページをコピーして同じ部分に貼り付け、最初のページの名前を変更し(名前は何でも)、コピーしたページの名前を元のページに変更しました。これで、コントロールにアクセスできるようになりました。

于 2012-05-21T10:18:02.513 に答える
0
  1. カスタムタグを無効なタグ名に置き換えます。それを保存
  2. 無効なタグ名をカスタムタグ名に戻します。それを保存。次に、*。designer.csファイルをチェックアウトして(またはdesigner.csをサイレントに変更して)、カスタムタグコ​​ントロールの正しい変数を生成するように求められます。
于 2010-01-29T07:13:41.940 に答える
0

すでに与えられたすべての良い答えとは別に、@ johan-leinoの素晴らしい答えに追加したいと思います. 私の場合、なんらかの理由で、ディレクティブ/.aspx ファイルCodeBehindから属性が省略されました。同様に、ディレクティブ/.ascx ファイルの属性@Pageをチェックする価値があるかもしれません(明らかに、どちらの場合も属性と組み合わせて)。CodeFile@ControlInherits

.designer.cs の再生成を「強制」するために必要な正確なシナリオと理由によっては、(変更があったかどうかに関係なく) 保存する前に (解析エラーを示す可能性がある) ドキュメントをフォーマットすることもできます。エラーリストで警告を確認してください。

于 2010-11-24T06:38:01.923 に答える
0

私はこの問題をたくさん抱えていましたが、またやりました。これらの提案を使用して修正しようとしましたが、何も機能しませんでした。最終的に、ページ ヘッダーに 'Title' 属性が 2 回あることがわかりました (最後に追加しましたが、VS が空白の Title="" を最初に追加したことに気づきませんでした)-余分な属性を削除すると、VS2008 が再生成されましたデザイナー ファイル... VS2010 がこの問題を解決して、デザイナー ファイルの生成が行われない理由を教えてくれることを願っています...

-- デレク

于 2010-09-09T16:36:56.550 に答える
0

私はパーティーに遅れていることを知っていますが、@Glenn Slaven による受け入れられた回答と @Espo による現在の最高評価の回答を試した後、まだ運が悪い場合、次のことで一部の人々を救うことができると思いました。

ユーザー コントロール (.ascx) は、常に自動生成を停止するものです。ユーザー コントロールで他のユーザー コントロールを使用すると、自動生成が中断されることがわかりました。

私が思いついた解決策は、外部ソースからの CSS クラスを使用するときに IntelliSense をユーザー コントロールまたはスキン ファイルで動作させるために、誰もが知っているトリックを使用することでした。CSS ファイルを参照するだけでなく、必要な他のユーザー コントロールを登録します。次のようになります。

<% If False Then %>
<%@ Register TagPrefix="uc" TagName="Title" Src="~/controls/title.ascx" %>
<link rel="stylesheet" type="text/css" href="../css/common.css"  />
<% End If %>

その後、ファイルを保存すると、自動生成が再生成され、バックアップが実行されます。

于 2011-06-01T18:09:04.597 に答える
0

私は以前にこの問題を抱えていました。通常、Enter キーを押して行を追加し、プラス/マイナスが HTML ページに表示されるのを待ちます。デザイナーが必要なものを追加する必要があります。また、プロジェクトを閉じてから再度開く必要がありました。

于 2010-07-06T15:08:15.387 に答える
0

私はこの問題を抱えていました。私にとっては、コントロールの 1 つの ID 値の 1 つにスペースがありました。スペースを取り除くと、デザイナー ファイルが再生成されました。

于 2010-02-21T22:58:57.007 に答える
0

私の場合、一番上に登録タグプレフィックスがありませんでした。どういうわけか、以前の開発者はこれがなくても機能しましたか?

于 2010-06-17T17:42:10.623 に答える
0

私の場合、 @Page セクションに CodeBehind を追加すると修正されました。

于 2011-04-29T16:13:19.173 に答える
0

解決策は、ファイル内からNoneに変更することでしたCompile.csproj

<Compile Include="Logout.aspx.designer.cs">
      <DependentUpon>Logout.aspx</DependentUpon>
</Compile>
于 2021-04-04T13:21:58.343 に答える
0

VS2015の場合...これは、WebSiteプロジェクトからWebアプリケーションプロジェクトに切り替えるためのVBの例です。他の解決策はどれもうまくいきませんでした。そのため、これを共有しています。エレガントではありませんが、機能します。

ステップ 0: プロジェクト内のすべての " CodeFile=" を " CodeBehind=" に置き換えます。 ステップ 1: ソリューションを閉じます。手順 2: 次のコード (手順の下) を使用して、自家製の Windows アプリを実行します。ステップ 3: ソリューションを再度開きます。ステップ 4: ソリューション エクスプローラーですべてのファイルを表示していることを確認し、designer.vb (または C# の場合は designer.cs) を検索します ステップ 5: 不足しているファイルをすべて選択し、プロジェクトに含めます。ステップ 6: ファイルごとに、メイン ページ/コントロールを表示して保存します。

    private void button1_Click(object sender, EventArgs e)
    {
        ProcessDirectory(new DirectoryInfo(textBox1.Text));
    }

    private void ProcessDirectory(DirectoryInfo directory)
    {
        ProcessMask(directory, ".ascx", ".vb");
        ProcessMask(directory, ".aspx", ".vb");

        foreach (DirectoryInfo directoryInfo in directory.GetDirectories())
            ProcessDirectory(directoryInfo);
    }

    private void ProcessMask(DirectoryInfo directory, string maskStart, string maskEnd)
    {
        FileStream fs;
        foreach (FileInfo file in directory.GetFiles(string.Format("*{0}{1}", maskStart, maskEnd)))
        {
            string designerFileName = file.Name.Replace(string.Format("{0}{1}", maskStart, maskEnd), string.Format("{0}.designer{1}", maskStart, maskEnd));
            if (directory.GetFiles(designerFileName).Length == 0)
            {
                using (fs = File.Create(Path.Combine(directory.FullName, designerFileName)))
                {
                    fs.Close();
                }
            }
        }
    }
于 2017-01-17T15:17:09.233 に答える
0

これが古いトピックであることはわかっていますが、まだ提案されていない解決策を追加したかっただけです。

リソースファイルにも同じ問題がありました。Visual Studio 以外で編集しましたが、デザイナー ファイルが正しく更新されませんでした。

ファイルの名前を変更すると、Designer ファイルが再生成されました。もう一度最初の名前に名前を変更しただけで、うまくいきました!

于 2013-06-24T08:06:48.510 に答える