質問者
WPF:UserControl作成時の参照問題

質問
-
Visual C# 2008 Express Editionの不具合について質問です。
環境:WindoesXP SP2上記環境でWPFのUserControlを作成中にデザイナーで表示しようとした所、プレビュー画面に表示はされるのですが、エラーメッセージが表示されインテリセンスが使用できません。
エラーメッセージ
「n:TestUC' が見つかりませんでした。アセンブリ参照が失われていないか、また、すべてのアセンブリがビルドされているかを確認してください。」(TestUCは今回作成しているUserControlです。)F5にてアプリケーションを実行すると何事もなく起動できます。
このエラーについて調べた所、以下の条件が浮かび上がりました。
1. 外部のプロジェクトをインポート
2. そのプロジェクト内に在るものを参照する
3. デザイナーで表示されるが、エラーとなる。
(今回は外部のプロジェクトにあるenumを参照しています)ビルド自体は通っておりエラーなどはありません。
プロジェクトの依存関係やビルドの順番なども見直してみましたが、駄目なようです。
解決方法がありましたら、教えてください。問題が再現するプロジェクトを作成しましたので、下記URLからご覧いただければ幸いです。
すべての返信
-
anemotoさん、こんにちは。
フォーラムオペレーターの高橋春樹です。
MSDNフォーラムのご利用、有難うございます。今回、Visual C# 2008 Express Editionの不具合について、
投稿して頂いたと思うのですが、皆様からの回答が得られないようでしたら、
Connectサイトの方に、フィードバックされてみてはどうでしょうか?Microsoft Visual Studio 製品フィードバック
http://www.microsoft.com/japan/msdn/vstudio/feedback/
もし、同じような問題・対処法など、ご存知の方がいらっしゃいましたら、
ご投稿、よろしくお願いします。
マイクロソフト株式会社 フォーラム オペレータ 高橋春樹 -
私もanemotoさんと同じ問題が発生しました。
anningoさんの回答を参考にして、自分のコードにusing System.ComponentModel;を追加した所解決しました。
このusing System.ComponentModelは、INorifyPropertyChangedを使う時などでエンティティクラスに追加したりして使ってました。
自分自身は、エンティティクラスをビハインドコードとは別に作成していましたので、ビハインドコードに直接このusing System.ComponentModel を追加したのは初めてでしたので、全然この答えに辿りつきませんでした。
anningoさんありがとうございました。
03188 -
ちょっと 03188 さんにお尋ねします。
using System.ComponentModel;
は
totojo さんが書かれたように EditorBrowsableAttribute を使用する場合に必要になりますが、
03188 さんも今回 EditorBrowsableAttribute を使われたのでしょうか?
単に using を追加されただけですと、もしかして using の追加というソースコードの変更によってリビルドが発生した、ということではないでしょうか?
たとえばその using を削除すると問題が再発するのでしょうか?
(それと anningo さんの環境でも、同じ問題が再現できたのでしょうか?
普通は可視性で表示有無が決まりそうに思いますので、Always の指定にどんな意味があるのだろうと思いました。) -
ご連絡が遅くなり、大変失礼いたしました。
しばらく、MSDNを覗いていなかった為、気が付きませんでした・・・
そして、環境を確認してから(明確には覚えていないので・・・)お答えしたかったのですが、
時間が経ち過ぎてどの環境で操作していたのか分からなくなりました。この様な理由で以下の回答は不十分もしくは、的外れであるかもしれません。
>単に using を追加されただけですと、もしかして using の追加というソースコードの変更によってリビルドが発生した、ということではないでしょうか?
>たとえばその using を削除すると問題が再発するのでしょうか?usingを削除すると問題は再発していたと記憶しています。
>totojo さんが書かれたように EditorBrowsableAttribute を使用する場合に必要になりますが、
>03188 さんも今回 EditorBrowsableAttribute を使われたのでしょうか?使っていなかった様に思います。ただ、using System.ComponentModel;は私は良く使っています。
以上が、現在の私からの回答となります。
03188