0

Visual Studio 2008 で ASP.NET 3.5 Web アプリケーション プロジェクトのユーザー コントロール (.ascx ファイル) に変更を加えています。マークアップで行った変更がデザイナー ファイルに反映されていないことに気付きました (かなりよく知られた 問題)。デザイナーファイルを削除し、「Webアプリケーションに変換」で再生成してみました。そうすると、次のエラーが発生しました。

デザイナー ファイルの生成に失敗しました: アセンブリ 'System.Web、Version=2.0.0.0、Culture=neutral、PublicKeyToken=b03f5f7f11d50a3a' から型 'MyWebApplication.MyCustomExpressionBuilder' を読み込めませんでした。(E:\MyPath\MyWebApplication\Web.config 166 行目)

.ascx マークアップで行っていた変更は、.ascx 内の特定のコントロールのおよび/またはプロパティの値としてカスタムExpressionBuilderを使用することでした。これは Web アプリケーションの他の場所で使用され、ブール値を同様のプロパティに返すことに成功しています。例えば:VisibleEnabledExpressionBuilder

<asp:TableRow runat="server" Visible="<%$ MyCustom: TheExpressionValue %>">
    <%-- some TableCells and contents here --%>
</asp:TableRow>

エラー メッセージに記載されている Web.config 行はadd、次のタグです。

<system.web>
    <compilation debug="true">
        <!-- Skipping the 'assemblies' and 'buildProviders' areas -->
        <expressionBuilders>
            <add expressionPrefix="MyCustom" type="MyWebApplication.MyCustomExpressionBuilder" />
        </expressionBuilders>
    </compilation>
    <!-- other stuff -->
</system.web>

このクラスMyCustomExpressionBuilderは、同じ Web アプリケーション プロジェクト内のディレクトリCode(App_Code何らかの理由で ではありません。クラス ファイルを移動するとどの程度壊れるかわかりません) にあります。

必要に応じて、コントロールのカスタムを回避し、代わりに使用する呼び出しページのプロパティを追加することで、この問題を回避ExpressionBuilderできますが、それは理想的ではありません。組み込み式 ( など<%$ Resources: CommonResource, SomeTextString %>) は既にコントロール内にあり、正常に機能していたことに注意してください。

ここに私が試したいくつかのことがあります:

  1. プロジェクトを再構築するだけです。デザイナー ファイルが読み込まれず、プロパティがないためにコード ビハインドで多くのビルド エラーが発生します。
  2. コントロール マークアップを変更し、保存して、(デザイナー ファイルを削除しようとする前に) コントロールを元に戻し、デザイナー ファイルを開いていないことを確認しました。このプロセスは、黙って失敗しました。
  3. ここで提案されているように、ClassNameパラメーターをディレクティブに追加します。無効。<%@ Control %>
  4. 追加し<%@ Assembly Name="MyWebApplication" %>ます。無効。
  5. 追加し<%@ Import Namepace="MyWebApplication" %>ます。無効。
  6. 追加し<%@ Reference VirtualPath="~/Code/MyCustomExpressionBuilder.cs" %>ます。無効。
  7. Visual Studio を閉じて再起動します。ascx で "Convert to Web Application" を最初に実行しようとしたとき、少なくとも別のエラーが発生しました: "タイプ 'System.Exception' の例外がスローされました"。プロジェクトの再構築を試みてすべてのエラーを取得した後 (上記の #1 を参照)、「Web アプリケーションに変換」を実行すると、以前と同じ「デザイナー ファイルの生成に失敗しました」というエラー メッセージが表示されます。

プロジェクトを新しい Visual Studio バージョンにアップグレードすることは、現時点ではオプションではありません。前述のように、カスタムExpressionBuilderクラスは少なくとも .aspx ファイルから動作しているため、移動したくありません。他に何を試すことができますか?

4

1 に答える 1