ラベル C# の投稿を表示しています。 すべての投稿を表示
ラベル C# の投稿を表示しています。 すべての投稿を表示

2019年6月24日月曜日

「インスタンスを作成中に例外が発生しました」のエラーで、デザイナにフォームが表示されない

Visual StudioでC#を扱っていて、デザイナでフォームを表示しようとした際に以下のようなエラーとなって、フォームの内容が表示できませんでした。

----------
ドキュメントを読み込み中にエラーが発生しました。このエラーを修正してから、再度ドキュメントを読み込んでください。エラー メッセージは以下の通りです。

XXX のインスタンスを作成中に例外が発生しました。例外は "フィールドが見つかりません : YYY" です。
----------

表示できないフォームは、他のフォームを継承して作成されています。上記メッセージのXXX部分に継承元クラス名が表示されています。
その継承元にあるはずの上記フィールド「YYY」が見つからないという内容のエラーメッセージです。
継承元クラスを再ビルドしたりしましたが、エラーが解消されませんでした。

これに少しはまりましたが、参照設定に登録されている継承元クラスを確認したところ、ローカルコピーの設定がTrueになっていました。これをFalseに変更したらフォームを表示することができるようになりました。
なぜこのようになるのか、まだ意味は理解していませんが、ひとまずはこれで解決できたようです。

2019年6月21日金曜日

パーサー エラー メッセージ: 型 を読み込めませんでした。エラーの対処法

AP.NETで、以下のような「パーサー エラー メッセージ: 型 'XXX' を読み込めませんでした。」といったエラーがIEに表示される場合、

-------------------------------------------------------------------

'XXX' アプリケーションでサーバー エラーが発生しました。

パーサー エラー
説明: この要求の処理に必要なリソースの解析中にエラーが発生しました。以下の解析エラーの詳細を確認し、ソースファイルに変更を加えてください。

パーサー エラー メッセージ: 型 'XXX' を読み込めませんでした。

ソース エラー:

行 1:  <%@ Page language="c#" Codebehind="XXX.aspx.cs" AutoEventWireup="false" Inherits="XXX" %>

ソース ファイル: XXX.aspx    行: 1

-------------------------------------------------------------------

それは、IISで設定されているアプリケーションのフォルダの中のbinに、該当のクラスのDLLファイルがないことを意味します。
したがって、以下の事項をよく確認してみてください。
1.IISのツリーをよく見て、アプリケーションのフォルダが設定されていることや、必要以上のフォルダに設定されていないことを確認する。
2.アプリケーションとして設定されているフォルダをエクスプローラーで開き、その中のbinフォルダに、該当のクラスのDLLがあることを確認する。

2019年6月11日火曜日

C#のString.Replaceは複数文字列を置き換えるか

C#で文字列の中の文字列を置き換えるにはReplaceメソッドを使います。

String str = "ABCDE";
str = str.Replace("BC", "XXX");

"BC"を"XXX"に置き換えます。strは"AXXXDE"になります。

文字列中に含まれる複数の文字列を置き換えることもできます。

String str = "ABCDEABCDE";
str = str.Replace("BC", "XXX");

二回でてくる"BC"を両方とも"XXX"に置き換えて、strは"AXXXDEAXXXDE"になります。

StringのReplaceは複数の文字列を置き換えます。

あと、注意する点としてはReplaceは、その文字列そのものは置き換えず、置き換えた文字列を返すということです。Replaceを行ったらそれを他の変数に入れる等しなければ意味がありません。