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 アプリケーションの他の場所で使用され、ブール値を同様のプロパティに返すことに成功しています。例えば:Visible
Enabled
ExpressionBuilder
<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 %>
) は既にコントロール内にあり、正常に機能していたことに注意してください。
ここに私が試したいくつかのことがあります:
- プロジェクトを再構築するだけです。デザイナー ファイルが読み込まれず、プロパティがないためにコード ビハインドで多くのビルド エラーが発生します。
- コントロール マークアップを変更し、保存して、(デザイナー ファイルを削除しようとする前に) コントロールを元に戻し、デザイナー ファイルを開いていないことを確認しました。このプロセスは、黙って失敗しました。
- ここで提案されているように、
ClassName
パラメーターをディレクティブに追加します。無効。<%@ Control %>
- 追加し
<%@ Assembly Name="MyWebApplication" %>
ます。無効。 - 追加し
<%@ Import Namepace="MyWebApplication" %>
ます。無効。 - 追加し
<%@ Reference VirtualPath="~/Code/MyCustomExpressionBuilder.cs" %>
ます。無効。 - Visual Studio を閉じて再起動します。ascx で "Convert to Web Application" を最初に実行しようとしたとき、少なくとも別のエラーが発生しました: "タイプ 'System.Exception' の例外がスローされました"。プロジェクトの再構築を試みてすべてのエラーを取得した後 (上記の #1 を参照)、「Web アプリケーションに変換」を実行すると、以前と同じ「デザイナー ファイルの生成に失敗しました」というエラー メッセージが表示されます。
プロジェクトを新しい Visual Studio バージョンにアップグレードすることは、現時点ではオプションではありません。前述のように、カスタムExpressionBuilder
クラスは少なくとも .aspx ファイルから動作しているため、移動したくありません。他に何を試すことができますか?